Benutzer:Kirmse/delixs-poollist
delixs-poollist
- dieses Script listet alle DHCP-Pools für eine Netzwerkkarte auf
- Parameter: --help oder -h, --tnetz oder -t
- Aufruf: delixs-poollist -t 10.101.0.0
das Teilnetz muss normalerweise nicht angegeben werden. Voreinstellung ist '10.100.0.0'. Das Script wird also normalerweise ohne Parameter aufgerufen.
das Script
<source lang="perl">
- !/usr/bin/perl
use warnings; use strict;
use Net::LDAP; use Getopt::Long;
- dieses Script listet alle DHCP-Pools für eine Netzwerkkarte auf
- standardmäßig wird hier als (Teil-)Netz 10.100.0.0. genommen. Das
- kann durch einen Parameter --tnetz bzw. -t geändert werden.
my ($ldap, $ldap_base, $entry, $mesg, $teilnetz, $vorgabe_teilnetz, $temp);
$vorgabe_teilnetz = '10.100.0.0';
- Initialisieren der Variablen fuer die Parameter
$teilnetz = ;
- wir holen uns zuerst die Parameter,
- falls --help, dann Ausgabe der Hilfe (siehe &help) und beenden
GetOptions('tnetz=s'=> \$teilnetz,
'help' => \&help);
- Wenn Parameter Teilnetz uebergeben, dann kontrollieren
unless ($teilnetz eq ) {
# ob richtiges Format unless ($teilnetz =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.0$/) { die "Abbruch: Das Teilnetz $teilnetz ist keine gueltige Angabe!\n" }
}
- Wenn der Parameter nicht uebergeben
else {
# dann setzen wir das Teilnetz $teilnetz = $vorgabe_teilnetz;
}
- wir holen uns die Such-Basis ($ldap_base) aus der ldap.conf
open DATEI, '<', '/etc/ldap/ldap.conf'
or die "Abbruch: konnte ldap.conf nicht oeffnen, $!\n";
while (my $zeile = <DATEI>) {
if ($zeile =~ m/^\s*base\s+(\w.*\w)\s*$/i) { $ldap_base = $1; last; }
} close DATEI;
- wir verbinden uns mit dem LDAP
$ldap = Net::LDAP->new('127.0.0.1', version => 3) or die "Abbruch: $@"; $ldap->bind or die "Abbruch: konnte mich nicht mit dem LDAP verbinden";
- wir ueberpruefen, ob das Teilnetz im LDAP existiert
$mesg = $ldap->search(base => "cn=$teilnetz,cn=DHCP Config,$ldap_base",
filter => "cn=$teilnetz", attrs => 'dhcpNetMask' );
- wenn wir keinen Eintrag erhalten haben, dann Abbruch
if (scalar ($mesg->entries) == 0) {
die "Abbruch: Das Teilnetz $teilnetz existiert nicht im LDAP!\n";
}
- wir holen uns von dem Teilnetz die angelegten DHCP-Pools
$mesg = $ldap->search(
base => "cn=$teilnetz,cn=DHCP Config,$ldap_base", filter => 'objectClass=dhcpPool', attrs => ['cn', 'dhcpRange'] );
- wenn Fehlercode, dann das Script mit Fehlermeldung sterben lassen
$mesg->code and die $mesg->error;
- wir trennen uns vom LDAP
$ldap->unbind;
- Ausgabe
if (scalar $mesg->entries > 0) {
foreach my $entry ($mesg->entries) { $temp = $entry->get_value('cn'). ': '; $temp .= $entry->get_value('dhcpRange'); print $temp, "\n"; }
} else {
print "Warnung: keinen DHCP-Pool im Teilnetz $teilnetz gefunden!\n";
}
- Programm-Ende #####################################
- Wenn Parameter -h uebergeben wurde, dann Hilfe ausgegeben und beenden
sub help {
print "Hilfe muss noch erstellt werden.\n"; exit (0);
}
__END__
</source>