Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../.././../../.././bin/./ldapcat
Real path: /usr/bin/ldapcat
Zurück
#!/usr/bin/sh # ldapcat VERSION=2.7 # Jan-Peter Bell # Robert Sombrutzki # # Tue Jan 20 15:21:24 MET 2015 JPB # Wednesday, September 27, 2017 09:50:55 AM MEST # Wednesday, October 11, 2017 10:29:42 AM CEST # Tuesday, November 21, 2017 11:28:41 AM CET # Ausgabe der Informationen aus dem LDAP analog ypcat # # Konfigurationsfile fuer ldapserver unter /etc/ldapcat.conf # getestet auf SuSE 11.0, Solaris 10, Solaris11 # benoetigt /usr/bin/base64 # benoetigt gawk # use() { echo echo "ldapcat - Version $VERSION" echo " $1" echo " use:" echo " ldapcat passwd [muster]" echo " ldapcat group [muster]" echo " ldapcat hosts [muster]" echo " ldapcat auto.home [muster]" echo " ldapcat auto_home [muster]" echo " ldapcat netgroup [muster]" echo " ldapcat gesperrt [muster]" } if [ $# -lt 1 -o $# -gt 2 ] ; then use "Falsche Zahl von Parametern" exit 255 fi MUSTER="" if [ $# -eq 2 ] ; then MUSTER="$2" fi LDAPSEARCH=/usr/bin/ldapsearch AWK=/usr/bin/gawk #if [ `uname -s` = "SunOS" ] ; then # SWITCH=-T # if [ ! -x $AWK ] ; then # AWK=/opt/csw/bin/gawk # fi #else SWITCH=-LLL #fi if [ ! -x $LDAPSEARCH ] ; then echo "$0: Error - ldapsearch exitistiert nicht unter: $LDAPSEARCH" exit fi if [ ! -x $AWK ] ; then echo "$0: Error - kein gawk gefunden" exit fi if [ ! -x /usr/bin/base64 ] ; then echo "$0: Error - kein /usr/bin/base64 vorhanden" exit fi GREP=/usr/bin/grep if [ ! -x $GREP ] ; then GREP=/bin/grep fi if [ ! -x $GREP ] ; then echo "$0: Error - kein grep gefunden" exit fi NSLOOKUP=/usr/bin/nslookup if [ ! -x $NSLOOKUP ] ; then NSLOOKUP=/usr/sbin/nslookup if [ ! -x $NSLOOKUP ] ; then echo "$0: Error - kein nslookup gefunden" exit fi fi if [ "x$HOME" = "x" ] ; then echo "$0: Error - \$HOME nicht gesetzt!!!" exit fi if [ "$HOME" = "/" ] ; then cd /tmp else cd $HOME fi TEMPFILE=.ldapcat.tmp.$$ fix_base64() { $AWK -v TEMPFILE=$TEMPFILE '/::/ { printf ("%s",$2) > TEMPFILE; \ close(TEMPFILE); \ kommando = "/usr/bin/base64 -d "TEMPFILE; \ kommando | getline OPT ; \ close(kommando); print $1" "OPT; next; } { print ; }' } fix_ldap_linebreak() { $AWK ' BEGIN { STORE = "" ; ANF = 0 ;} { if ( ANF == 0 ) { STORE = STORE $0; ANF=1; } else { if ( $0 ~ "^ " ) { gsub("^ ",""); STORE = STORE $0; } else { print STORE ; STORE = $0 ;} } } END { print STORE; }' } rm -f $TEMPFILE touch $TEMPFILE 1>/dev/null 2>&1 if [ ! -f $TEMPFILE ] ; then echo "$0: Error - kann '$TEMPFILE' in '`pwd`' nicht schreiben" exit fi trap " /bin/rm -f $TEMPFILE ; exit 1 ; " 1 2 3 4 5 6 7 8 10 12 13 14 15 16 LDAP_BASEDN=ou=all,dc=informatik,dc=hu-berlin,dc=de if [ -s /etc/ldapcat.conf ] ; then . /etc/ldapcat.conf else #Local LDAP? hostname | egrep "^repl[0-9]+|^master[0-9]*" 1>/dev/null 2>&1 if [ "x$?" = "x0" ]; then LDAPSERVER=localhost else #20er Subnet? $NSLOOKUP `hostname`.informatik.hu-berlin.de | $GREP Address | $GREP -v 53 | $AWK '{print $2}' | $GREP "141.20.20." > /dev/null 2>&1 if [ "x$?" = "x0" ]; then LDAPSERVER=repl201.informatik.hu-berlin.de else LDAPSERVER=repl211.informatik.hu-berlin.de fi fi if [ "x$LDAPCAT_DEBUG" = "x1" ]; then echo $LDAPSERVER fi fi if [ "x$MUSTER" != "x" ] ; then SEARCH_PATTERN=$MUSTER else SEARCH_PATTERN="*" fi case $1 in "passwd") $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b ou=People,$LDAP_BASEDN $SWITCH "uid=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^uid:/ { UID=$2; } \ /^uidNumber:/ { UIDN=$2; } \ /^gidNumber:/ { GIDN=$2; } \ /^gecos:/ { GECOS=$2; for ( N=3 ; N <= NF; N++ ) GECOS=GECOS" "$N; } \ /^homeDirectory:/ { HOME=$2; } \ /^loginShell:/ { SHELL=$2 ; } \ /^$/ { if ( UID != "" ) print UID":*:"UIDN":"GIDN":"GECOS":"HOME":"SHELL; UID=""; } \ END { if ( UID != "" ) print UID":*:"UIDN":"GIDN":"GECOS":"HOME":"SHELL; } ' | sort ;; "group" ) $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b ou=Group,$LDAP_BASEDN $SWITCH "cn=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^gidNumber:/ { GID=$2; } \ /memberUid:/ { if ( MEMBER == "" ) MEMBER=$2; else MEMBER = MEMBER","$2; } \ /^cn:/ { CN=$2; MEMBER=""; } \ /^$/ { if ( CN != "") print CN"::"GID":"MEMBER; CN=""; } \ END { if ( CN != "") print CN"::"GID":"MEMBER; } ' | sort ;; "auto.home") $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b nisMapName=auto.home,ou=automount,$LDAP_BASEDN $SWITCH "cn=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^cn:/ { CN=$2; } \ /^nisMapEntry:/ { OPT=$2; SOURCE=$3; } \ /^$/ { if (CN != "") print CN" "OPT" "SOURCE; CN=""; } \ END { if (CN != "") print CN" "OPT" "SOURCE; } ' | sort ;; "auto_home") $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b automountMapName=auto_home,ou=automount,$LDAP_BASEDN $SWITCH "automountKey=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^cn:/ { CN=$2; } \ /^automountInformation:/ { OPT=$2; SOURCE=$3; } \ /^$/ { print CN" "OPT" "SOURCE; CN=""; } \ END { if ( CN != "" ) print CN" "OPT" "SOURCE; } ' | sort ;; "hosts") $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b ou=Hosts,$LDAP_BASEDN $SWITCH "cn=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^cn:/ { CN=CN" "$2; } \ /^ipHostNumber:/ { ADDR=$2; } \ /^$/ { if (CN != "") print ADDR" "CN; CN="";} \ END { if (CN != "") print ADDR" "CN; } ' | sort ;; "netgroup") $LDAPSEARCH -x -H ldaps://$LDAPSERVER -b ou=Netgroup,$LDAP_BASEDN $SWITCH "cn=$SEARCH_PATTERN" | \ fix_base64 | fix_ldap_linebreak | \ $AWK '/^cn:/ { CN=$2; } \ /^nisNetgroupTriple:/ { TRIPL=TRIPL" "$2; } \ /^memberNisNetgroup:/ { MEMBER=MEMBER" "$2; } \ /^$/ { if (CN != "") print " "CN" "TRIPL MEMBER; TRIPL=""; MEMBER=""; CN=""; } \ END { if (CN != "") print " "CN" "TRIPL MEMBER; } ' | sort ;; "gesperrt") if [ -f /vol/fob-vol1/HUI/gesperrt ]; then echo echo " Gesperrte Nutzer (Stand: `ls -o /vol/fob-vol1/HUI/gesperrt | awk '{ print \$5,\$6,\$7; }'`)" echo for i in `cat /vol/fob-vol1/HUI/gesperrt | sort | \ if [ "x$MUSTER" != "x" ] ; then $GREP -i "\<$MUSTER\>" else cat fi ` do echo " $i" done echo else echo "Auf diesem Rechner liegern keine Informationen vor!" fi ;; *) rm -f $TEMPFILE use "unbekannte Datenbasis" exit 254 ;; esac rm -f $TEMPFILE exit