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";
--
Przemysław Broniszewski (SGM)
Administrator serwera netfinity.warsztat.net.pl
email: broneq(a)warsztat.net.pl
tel: /0-58/ 559-89-83