OpenLDAP批量增加用户脚本


#!/bin/bash
Date=$(date +%Y%m%d)
Log_File="result-${Date}.log"
Log_CMD="tee -a $Log_File"
UserLDIF="user-${Date}.ldif"
UserWithPW="user-result.txt"

Usage() {
	if [ ! $1 ]; then
		echo "Usage: $0 请指定需要操作的文件名!"
		exit 1
	fi
}

AddUserToFile() {
	i=1
	while read line; do
		echo $(date "+%Y-%m-%d %H:%M:%S") "正在读取第 $i 行:$line" | $Log_CMD
		arr=($line)
		randompw=$(echo $RANDOM | md5sum | cut -c 1-8)
		secpw=$(slappasswd -h {SHA} -s $randompw)
		echo -e "${line}\t${arr[1]}\t${randompw}" >>$UserWithPW

		echo "dn: uid=${arr[1]},ou=OpenVPN,dc=example,dc=com" >>$UserLDIF
		echo "objectClass: inetOrgPerson" >>$UserLDIF
		echo "objectClass: posixAccount" >>$UserLDIF
		echo "objectClass: shadowAccount" >>$UserLDIF
		echo "cn: ${arr[0]}" >>$UserLDIF
		echo "sn: ${arr[0]}" >>$UserLDIF
		echo "uid: ${arr[1]}" >>$UserLDIF
		echo "homeDirectory: /home/OpenVPN/${arr[1]}" >>$UserLDIF
		echo "userPassword: $secpw" >>$UserLDIF
		echo "gidNumber: 80000000" >>$UserLDIF
		echo "uidNumber: 80000000" >>$UserLDIF
		echo "mail: ${arr[2]}" >>$UserLDIF
		echo "homePhone: ${arr[1]}" >>$UserLDIF
		echo "" >>$UserLDIF

		echo -e "$(date "+%Y-%m-%d %H:%M:%S") 已将第 $i 行数据写入ldif文件!" | $Log_CMD
		echo $(date "+%Y-%m-%d %H:%M:%S") "---------------------------------------------------------------------------------------------------------------------" | $Log_CMD
		sleep 2
		let i=$i+1
	done <$1
}

AddUser() {
	echo "正在向LDAP中增加用户,请耐心等待..."
	ldapadd -x -D "cn=Manager,dc=example,dc=com" -w 123456 -f $UserLDIF 2>&1 >>$Log_File
	if [ $? != 0 ]; then
		echo "用户增加失败,请检查日志记录!"
		exit 2
	else
		echo $(date "+%Y-%m-%d %H:%M:%S") "用户增加完成!" | $Log_CMD
	fi
}

Usage $1
AddUserToFile $1
AddUser