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
posted @   wanghongwei-dev  阅读(821)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示