Benutzer:Kirmse/delixs-machinelist

Aus Delixs
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

delixs-machinelist

  • Dieses Script dient dazu, die (Windows-)Rechner aufzulisten
  • Parameter: --help oder -h,
  • Aufruf: delixs-machinelist


das Script

<source lang="perl">

  1. !/usr/bin/perl

use warnings; use strict;

use Net::LDAP; use Getopt::Long;

my ($ldap, $ldap_base, $mesg, @pcs);


  1. falls --help, dann Ausgabe der Hilfe (siehe &help) und beenden

GetOptions('help' => \&help);

  1. 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;

  1. 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";

  1. wir holen uns die eingetragenen Machinenaccounts

$mesg = $ldap->search(

         base   => "ou=machines,ou=accounts,$ldap_base", 
         filter => 'gidNumber=1004',
         attrs  => ['uid', 'cn', 'uidNumber'] );
  1. wenn Fehlercode, dann das Script mit Fehlermeldung sterben lassen

$mesg->code and die $mesg->error;

  1. wir trennen uns vom LDAP

$ldap->unbind;

  1. Ausgabe

if (scalar $mesg->entries > 0) {

 foreach my $entry ($mesg->entries) {
   push @pcs, $entry->get_value('cn');
 }
 @pcs = sort @pcs;
 foreach my $rechnername (@pcs) {
   print $rechnername, "\n";
 }

} else {

 print "Warnung: keinen Maschinen-Account gefunden!\n";

}

                                      1. Programm-Ende #####################################
  1. Wenn Parameter -h uebergeben wurde, dann Hilfe ausgegeben und beenden

sub help {

  print "Hilfe muss noch erstellt werden.\n";
  exit (0);

}

__END__

</source>