Pulse писал(а):генерить каждые 10 минут конфиг это не комильфо. лучше всего использовать ldap как хранилище(хотя есть варианты и с mysql), а добавлять и удалять связки мак+айпи по событию в аффекторе "Добавление связки IP"/"Удаление связки IP"
Вполне вразумительно. Кому нужно тот реализует
Это же мой костыль как начинание. И многим он пригодится думаю.
Смысл следующий - есть php страница на которой выдергиваются данные о клиенте из БД UTMа, в том числе и MAC адрес, хочу добавить функцию на страничку "Смена мак адреса", дописал...в таблице ip_groups создаем новую запись по аналогии, ставим is_deleted=1 и создаём новую. Но вот мак изменяется ТОЛЬКО если рестартануть ядро.
Как можно выкрутится?
kill -HUP не помогает
Последний раз редактировалось kirush Ср ноя 17, 2010 23:44, всего редактировалось 1 раз.
настройка связки UTM5 - ldap - isc-dhcpd занимает минут 10, причем из костылей там только скрипт из 1й строки кода (вызов ldap-modify) который запускается самой UTMкой при редактировании сервисной связки типа ip-traffic. работает в реальном времени и не требует дерганий dhcpd
непонятно вообще зачем эти "начинания" с генерацией конфига для dhcpd
А сколько времени понадобится чтобы занести всё в LDAP?
Вот думаю может через suexec в php скрипте просто рестартовать "генератор dhcpd.conf" он же выдергивает напрямую из mysql. По идее должно сработать.
Не знаю зачем тебе такие извращения с suexec и php. Можно просто написать консольный скрипт. Вот рабочий пример на перле. Это экспорт хостов. Экспорт подсетей у меня выполнен из базы управления адресным пространством (к UTM отношения не имеет), так что придумай как это сделать. Если подсетей не много, то вполне можно руками вбить.
#!/usr/bin/perl
use strict;
use DBI;
my $db_login="changeme";
my $db_password = "andme";
my $db_name="UTM5";
my $db_host="localhost";
my $db_port="";
my $dbh = DBI->connect("dbi:mysql:dbname=$db_name;host=$db_host", "$db_login", "$db_password");
$dbh->{HandleError} = sub {print shift};
my $sql = "select inet_ntoa(4294967295 & ip), mac from ip_groups WHERE mac LIKE '%:%' AND ip_type=1 AND is_deleted=0";
my $sth = $dbh->prepare($sql);
my $rv = $sth->execute;
my $c=0;
if ($rv) {
while (my ($ip, $mac) = $sth->fetchrow_array()) {
$c++;
print qq(
dn: cn=$ip,cn=DHCP Config, dc=local,dc=domain
dhcpHWAddress: ethernet $mac
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
dhcpStatements: fixed-address $ip
cn: $ip
);
}
}
$sth->finish;
$dbh->disconnect;
Вывод записывается в файлик hosts.ldif и затем скармливается LDAP'у