#!/bin/bash assert(){ [[ $? -eq 0 ]] || { [[ -n ${1} ]] && echo ${@} ; exit 1 ; } } usage() { cat < " read USER_UID } # echo "Check if uid=${USER_UID},ou=People,${LDAP_DOMAIN_DN} exists" RES_DN=$(ldapsearch -LLL -H ldap:/// -D cn=${LDAP_ADMIN_CN},${LDAP_DOMAIN_DN} \ -w "${LDAP_ADMIN_PASSWORD}" -s base \ -b "uid=${USER_UID},ou=People,${LDAP_DOMAIN_DN}" \ "(objectClass=*)" 2>/dev/null \ | egrep '^dn: ' | sed -e 's/^dn: //g' ) [[ -z ${RES_DN} ]] assert "User already present. Please choose a different UID." [[ -n ${COMMON_NAME} ]] || { echo -n "Enter user CN (e.g. John Doe) > " read COMMON_NAME } [[ -n ${SURNAME} ]] || { echo -n "Enter user SN (e.g. Doe) > " read SURNAME } [[ -n ${USER_PASS} ]] || { echo -n "Enter user password (will not be echoed) > " read -s USER_PASS echo "" } [[ -n ${USER_EMAIL} ]] || { echo -n "Enter user email (leave blank for ${USER_UID}@${LDAP_DOMAIN}) > " read USER_EMAIL } USER_EMAIL="${USER_EMAIL:=${USER_UID}@${LDAP_DOMAIN}}" PWHASH=$(slappasswd -h "{SSHA}" -s "${USER_PASS}") echo "Creating user uid=${USER_UID},ou=People,${LDAP_DOMAIN_DN}" ldapadd -H ldap:/// -D cn=${LDAP_ADMIN_CN},${LDAP_DOMAIN_DN} \ -w "${LDAP_ADMIN_PASSWORD}" <<-EOF dn: uid=${USER_UID},ou=People,${LDAP_DOMAIN_DN} objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: ${COMMON_NAME} sn: ${SURNAME} uid: ${USER_UID} userPassword: ${PWHASH} mail: ${USER_EMAIL} EOF assert "Error adding user!"