#!/bin/ksh # Add a user to LDAP # Written 12/10/06 - KT export TOPDIR=/usr/local/lib/ldap . ${TOPDIR}/etc/vars if [ ! $LDAPDOMAIN ] then LDAPDOMAIN=$DEFAULTLDAPDOMAIN fi DNDOMAIN=`echo $LDAPDOMAIN | sed -e "s/^/dc=/g" -e "s/\./,dc=/g"` TODAY=`${TOPDIR}/bin/dse` if echo $* | grep "\-u" then OPTS=l:f:s:c:u:g:d:p:t:m:e UID= else OPTS=l:f:s:c:g:d:p:t:m:e UID=`/usr/local/scripts/nextuid` fi usage() { echo "Usage: $0 -l username -f first -s surname -c command_shell -u uid -g gid -d homedir -p password -t telephone -m mobilephone -e email_address" } USER= FIRST= LAST= SHELL= GID= HOMEDIR= PWHASH= PHONE= MOBILE= MAIL= # while getopts l:f:s:c:u:g:d:p:t:m:e: name while getopts $OPTS name do case $name in l) lflag=1 USER="$OPTARG" ;; f) fflag=1 FIRST="$OPTARG" ;; s) sflag=1 LAST="$OPTARG" ;; c) cflag=1 SHELL="$OPTARG" ;; u) uflag=1 UID="$OPTARG" ;; g) gflag=1 GID="$OPTARG" ;; d) dflag=1 HOMEDIR="$OPTARG" ;; p) pflag=1 PASSWD="$OPTARG" PWHASH=`${TOPDIR}/bin/dspw $PASSWD | tail -1 | awk ' { print $NF } ' | sed -e "s/{CRYPT}//"` ;; t) tflag=1 PHONE="$OPTARG" ;; m) mflag=1 MOBILE="$OPTARG" ;; e) eflag=1 if echo $EMAIL | grep @ > /dev/null then EMAIL="$OPTARG" else EMAIL=$USER@foo.bar fi ;; ?) usage exit 2 ;; esac done for OPT in `echo $OPTS | sed -e "s/:/ /g"` do EFLAG=${OPT}flag if [ $EFLAG -ne 1 ] then usage exit 1 fi done cat ${LDIFTMPLTDIR}/adduser.ldif | sed -e "s/USER/${USER}/" -e "s/UID/${UID}/" -e "s/GID/${GID}/" -e "s/FIRST/${FIRST}/" -e "s/LAST/${LAST}/" -e "s%SHELL%${SHELL}%" -e "s%HOMEDIR%${HOMEDIR}%" -e "s/DNDOMAIN/${DNDOMAIN}/" -e "s/PHONE/${PHONE}/" -e "s/CELL/${CELL}/" -e "s/TODAY/${TODAY}/" -e "s%PWHASH%${PWHASH}%" > ${WORKDIR}/adduser-${USER}.ldif ldapmodify -x -w $DIRMGRPW -D "cn=Directory Manager" -h $LDAPSERVER -f ${WORKDIR}/adduser-${USER}.ldif if [ $? -eq 0 ] then mv ${WORKDIR}/adduser-${USER}.ldif ${ADDEDDIR} else echo "Error adding user $USER" exit 1 fi