Keen 10 Опубликовано: 2008-05-05 10:02:55 Share Опубликовано: 2008-05-05 10:02:55 Решил внедрить себе в сеть дхцп сервер. В данный момент в скрипт OnChange добавил следующие строки: ip=`cat /var/stargazer/users/$login/conf | grep 'IP=' | cut -d "=" -f2` mac=`cat /var/stargazer/users/$login/conf | grep 'Userdata3=' | cut -d "=" -f2` num=`cat /etc/dhcp/dhcpd.conf | grep -n "$ip;" | cut -d: -f1` hst=$login if [ -z $num ]; then if [ -n $mac ]; then echo "host host-$hst {hardware ethernet $mac; fixed-address $ip;}" >> /etc/dhcp/dhcpd.conf fi fi Конфиг дхцп заточен под локалку, тест на 5ти юзерах прошел отлично. Подскажите, не могут ли обьявится подводные камни с такой конфигурацией? Ссылка на сообщение Поделиться на других сайтах
Neelix 33 Опубліковано: 2008-05-05 10:05:32 Share Опубліковано: 2008-05-05 10:05:32 это при любом изменении юзера будут добавлены в конфиг dhcpd его параметры Ссылка на сообщение Поделиться на других сайтах
Колян 2 Опубліковано: 2008-05-05 10:19:18 Share Опубліковано: 2008-05-05 10:19:18 #!/usr/local/bin/php <?php $conf=" default-lease-time 600; max-lease-time 7200; authoritative; ddns-update-style interim; log-facility local7; subnet 10.10.2.0 netmask 255.255.255.0 { range 10.10.2.10 10.10.2.100; option routers 10.10.2.1; option domain-name-servers 10.10.1.1; } subnet 10.10.3.0 netmask 255.255.255.0 { range 10.10.3.1 10.10.3.100; option routers 10.10.3.1; option domain-name-servers 10.10.1.1; } subnet 10.10.4.0 netmask 255.255.255.0 { range 10.10.4.1 10.10.4.100; option routers 10.10.4.1; option domain-name-servers 10.10.1.1; } subnet 10.10.5.0 netmask 255.255.255.0 { range 10.10.5.1 10.10.5.100; клиентам option routers 10.10.5.1; option domain-name-servers 10.10.1.1; } subnet 10.10.6.0 netmask 255.255.255.0 { range 10.10.6.1 10.10.6.100; option routers 10.10.6.1; option domain-name-servers 10.10.1.1; } subnet 10.10.7.0 netmask 255.255.255.0 { range 10.10.7.1 10.10.7.100; option routers 10.10.7.1; option domain-name-servers 10.10.1.1; } "; mysql_connect("10.10.1.1", "user", "password"); mysql_select_db("stargazer"); $q=mysql_query("select `IP`, `Userdata0`, `Userdata1`, `login` from `users`;"); while($res=mysql_fetch_array($q, MYSQL_NUM)){ if (!$res[1]=="" && !$res[2]==""){ $conf.=" host $res[3].lan { hardware ethernet $res[1]; fixed-address $res[0]; option routers $res[2]; } "; } } file_put_contents("/usr/local/etc/dhcpd.conf", $conf); system("/usr/local/etc/rc.d/isc-dhcpd restart"); ?> Ну думаю, тут все понятно. Запускать по крону каждые 10 минут. ДХЦП-сервер и СТГ сервер - разные машины. Что куда писать? `Userdata0` - мак адрес `Userdata1` - гейтвей Тестировалось, работает. Ссылка на сообщение Поделиться на других сайтах
Keen 10 Опубліковано: 2008-05-07 09:06:04 Автор Share Опубліковано: 2008-05-07 09:06:04 Окончательный вариант. Засовывается в OnChange. ip=`cat /var/stargazer/users/$login/conf | grep 'IP=' | cut -d "=" -f2` mac=`cat /var/stargazer/users/$login/conf | grep 'Userdata3=' | cut -d "=" -f2` num1=`cat /etc/dhcp/dhcpd.conf | grep -n "$ip;" | cut -d: -f1` hst=$login if [ -z $num1 ]; then if [ $mac1 -eq "18" ]; then echo " host host-$hst {hardware ethernet $mac; fixed-address $ip;}" $ fi else if [ $mac1 -eq "18" ]; then cat /etc/dhcp/dhcpd.conf | sed '/'$ip';/ c\ host host-'$hst' {hardware ethernet '$mac'; fixed-address '$ip';} ' >> /var/tmp/dhcpd.temp fi rm /etc/dhcp/dhcpd.conf mv /var/tmp/dhcpd.temp /etc/dhcp/dhcpd.conf fi Ссылка на сообщение Поделиться на других сайтах
rem_lex 2 Опубліковано: 2008-09-08 07:45:04 Share Опубліковано: 2008-09-08 07:45:04 #!/usr/local/bin/php <?php $conf=" default-lease-time 600; max-lease-time 7200; authoritative; ddns-update-style interim; log-facility local7; subnet 10.10.2.0 netmask 255.255.255.0 { range 10.10.2.10 10.10.2.100; option routers 10.10.2.1; option domain-name-servers 10.10.1.1; } subnet 10.10.3.0 netmask 255.255.255.0 { range 10.10.3.1 10.10.3.100; option routers 10.10.3.1; option domain-name-servers 10.10.1.1; } subnet 10.10.4.0 netmask 255.255.255.0 { range 10.10.4.1 10.10.4.100; option routers 10.10.4.1; option domain-name-servers 10.10.1.1; } subnet 10.10.5.0 netmask 255.255.255.0 { range 10.10.5.1 10.10.5.100; клиентам option routers 10.10.5.1; option domain-name-servers 10.10.1.1; } subnet 10.10.6.0 netmask 255.255.255.0 { range 10.10.6.1 10.10.6.100; option routers 10.10.6.1; option domain-name-servers 10.10.1.1; } subnet 10.10.7.0 netmask 255.255.255.0 { range 10.10.7.1 10.10.7.100; option routers 10.10.7.1; option domain-name-servers 10.10.1.1; } "; mysql_connect("10.10.1.1", "user", "password"); mysql_select_db("stargazer"); $q=mysql_query("select `IP`, `Userdata0`, `Userdata1`, `login` from `users`;"); while($res=mysql_fetch_array($q, MYSQL_NUM)){ if (!$res[1]=="" && !$res[2]==""){ $conf.=" host $res[3].lan { hardware ethernet $res[1]; fixed-address $res[0]; option routers $res[2]; } "; } } file_put_contents("/usr/local/etc/dhcpd.conf", $conf); system("/usr/local/etc/rc.d/isc-dhcpd restart"); ?> Ну думаю, тут все понятно. Запускать по крону каждые 10 минут. ДХЦП-сервер и СТГ сервер - разные машины. Что куда писать? `Userdata0` - мак адрес `Userdata1` - гейтвей Тестировалось, работает. классно, а кто может это на перл или баш перевести? Ссылка на сообщение Поделиться на других сайтах
moodperson 0 Опубліковано: 2008-09-09 08:29:42 Share Опубліковано: 2008-09-09 08:29:42 классно, а кто может это на перл или баш перевести? #!/usr/bin/perl -w use DBI; use strict; my $db_user = "stg"; my $db_pass = ""; my $db_host = "localhost"; my $db_name = "stargazer"; my $dhcp_conf = "/usr/local/etc/dhcpd.conf"; # where dhcp.conf ? my $dhcp_rc = "/usr/local/etc/rc.d/isc-dhcpd"; # where dhcp init script? my $dsn = "DBI:mysql:$db_name:$db_host"; my $conf = "default-lease-time 600; max-lease-time 7200; authoritative; ddns-update-style interim; log-facility local7; subnet 10.10.2.0 netmask 255.255.255.0 { range 10.10.2.10 10.10.2.100; option routers 10.10.2.1; option domain-name-servers 10.10.1.1; } subnet 10.10.3.0 netmask 255.255.255.0 { range 10.10.3.1 10.10.3.100; option routers 10.10.3.1; option domain-name-servers 10.10.1.1; } subnet 10.10.4.0 netmask 255.255.255.0 { range 10.10.4.1 10.10.4.100; option routers 10.10.4.1; option domain-name-servers 10.10.1.1; } subnet 10.10.5.0 netmask 255.255.255.0 { range 10.10.5.1 10.10.5.100; option routers 10.10.6.1; option domain-name-servers 10.10.1.1; } subnet 10.10.7.0 netmask 255.255.255.0 { range 10.10.7.1 10.10.7.100; option routers 10.10.7.1; option domain-name-servers 10.10.1.1; } "; my $dbh = DBI->connect($dsn, $db_user, $db_pass) || die "Could not connect to database: $DBI::errstr"; my $sql = "SELECT IP, Userdata0, Userdata1, login FROM users"; my $sth = $dbh->prepare($sql); $sth->execute(); my @row; while ( @row = $sth->fetchrow_array() ) { if ( $row[1] ne "" && $row[2] ne "" ) { $conf = join "", $conf, " host $row[3].local { hardware ethernet $row[1]; fixed-address $row[0]; option routers $row[2]; } " ; } } $sth->finish(); $dbh->disconnect(); open(DHCP, "> $dhcp_conf"); print DHCP $conf; close DHCP; my @args = ("$dhcp_rc", "restart"); system(@args) == 0 or die "system @args failed: $?"; Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас