OpenLDAP批量增加用户脚本
#!/bin/bash
Date=$(date +%Y%m%d)
Log_File="user-${Date}.log"
Log_CMD="tee -a $Log_File"
UserLDIF="user-${Date}.ldif"
UserWithPW="user-pw-${Date}.txt"
Usage() {
if [ -z "$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
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统