Benutzer:Kirmse/delixs-grouplist

Aus Delixs
Zur Navigation springen Zur Suche springen

delixs-grouplist

  • Dieses Script dient dazu, in User der Delixs-Gruppen hadmin, cadmin, tadmin, fachl, material, online und internet aufzulisten.
  • Parameter: --help oder -h, --group oder -g
  • Aufruf: delixs-grouplist -g hadmin


das Script

<source lang="perl">

  1. !/usr/bin/perl

use warnings; use strict;

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


my ($ldap, $ldap_base, $entry, $pass, $mesg, @members, $anzahl, $group, @groups);

@groups = qw(hadmin cadmin tadmin fachl material online internet);

  1. Initialisieren der Variablen fuer die Parameter

$group = ;

  1. wir holen uns zuerst die Parameter,
  2. falls --help, dann Ausgabe der Hilfe (siehe &help) und beenden

GetOptions('group=s'=> \$group,

          'help'   => \&help);
  1. Wenn kein Parameter -g oder --group uebergeben wurde, dann Abbruch

if ($group eq ) {

 die "Abbruch: es wurde keine Gruppe uebergeben!\n";

}

  1. Der Parameter -g muss in @groups aufgelistet sein

$anzahl = grep /^$group$/, @groups; if ( $anzahl == 0) {

 die "Abbruch: $group ist keine Delixs-Gruppe!\n"; 

}

  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 members

$mesg = $ldap->search(base => "cn=$group,ou=groups,$ldap_base",

                     filter => "cn=$group",
                     attrs  => 'memberUid');
  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. wir geben jetzt die Members aus

$entry = ($mesg->entries)[0]; @members = $entry->get_value('memberUid'); if (scalar @members > 0) {

 foreach my $member (@members) {
   print $member, "\n";
 }

} else {

 print "es sind keine Members in der Gruppe $group eingetragen!\n";

}


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

sub help {

  # hier den Text ausgeben
  exit (0);

}

__END__

</source>