#!/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