Użytkownik Przemysław Broniszewski napisał:
jest to rozwiazanie dobre i napewno go uzyje jak znajde czas pogrzbac w konfigach :) ale jednak uwazam iz powninno byc to w ktorejs z przyszlych wersji naprawione (ze wzgledu iz ten skrypt jak by nie patrzec nie dziala poprawnie).
OK przerobilem ten pliczek teraz uwzglednia wszystkie interfejsy do shared-network... U mnie dziala znakomicie (dodam iz to moj pierwszy kontakt z perlem... wiec skrypt moze wymagac poprawek :P, dlugi nie jest wiec duzo do poprawiania nie bedzie :) ) Zalożenia: Dla kazdego interfejsu tworzymy shared-network, jezeli mamy aliasy ip to beda przypisane do jednej shared-network, czyli adresy z koncowkami 1.1, 2.1, 3.1 na eth1 beda w jednej shared network. Zas adresy 4.1, 5.1, 6.1 na eth0 beda w oddzielnej sekcji... Jezeli zas nie zdefiniujemy interfejsu w sieci bedzie on przypisany do shared-network ostatniego interfejsu, czyli adres 7.1 bedzie w shared-network z eth0...
Czekam na uwagi... jak co to moge cos jeszcze poglowkowac... :)
biuro@notebook-znet:~/Desktop$ cat lms-makedhcpconf.diff --- lms-makedhcpdconf.orig 2004-10-15 14:47:15.000000000 +0200 +++ lms-makedhcpconf 2004-10-24 23:54:20.966863640 +0200 @@ -178,7 +178,8 @@ print DHCPDCONF "log-facility ".$logfacility.";\n"; }
-print DHCPDCONF "shared-network LMS {\n"; +#print DHCPDCONF "shared-network LMS {\n"; +
if(!$networks_list) { @@ -215,12 +216,29 @@ $usergrouplist{$row->{'name'}} = $row->{'id'}; }
+my @used_ifaces; +my $last_iface=''; + foreach my $key (@networks) { - my $dbq = $dbase->prepare("SELECT id, inet_ntoa(address) AS address, mask, gateway, dns, dns2, domain, wins, dhcpstart, dhcpend FROM networks WHERE name = UPPER('$key')"); + my $dbq = $dbase->prepare("SELECT id, interface, inet_ntoa(address) AS address, mask, gateway, dns, dns2, domain, wins, dhcpstart, dhcpend FROM networks WHERE name = UPPER('$key') ORDER BY interface"); + $dbq->execute(); while (my $row = $dbq->fetchrow_hashref()) { $key = lc($key); + print "$last_iface - $row->{'interface'}\n"; + if (!($last_iface eq $row->{'interface'}) and !($last_iface eq '') and !length($row->{'interface'})==0) + { + print DHCPDCONF "}\n\n"; + } + if (!length($row->{'interface'})==0) + { + if (!grep{$_ eq $row->{'interface'}} @used_ifaces) + { + print DHCPDCONF "shared-network LMS-$row->{'interface'} {\n"; + $last_iface=$row->{'interface'}; + } + } my $ndeflease = $ini->val("dhcp:$key",'default_lease_time') || $deflease; my $nmaxlease = $ini->val("dhcp:$key",'max_lease_time') || $maxlease; print DHCPDCONF "\tsubnet $row->{'address'} netmask $row->{'mask'} { # Network: $key (ID:$row->{'id'})\n";