一、前言
服务器集群、测试环境需要批量创建大量系统用户,手动创建效率极低。本脚本实现:批量创建用户、统一初始化密码、强制首次登录改密、自动判断用户是否存在、日志记录。
二、批量创建用户完整脚本(可直接上线)
#!/bin/bash
# 批量创建用户脚本
# 作者:运维实战
LOG_FILE="/var/log/create_user.log"
# 日志函数
log_info(){
echo "[$(date +%Y-%m-%d\\ %H:%M:%S)] [INFO] $1" | tee -a $LOG_FILE
}
# 定义用户列表
USER_LIST=(test01 test02 test03 test04 test05)
# 统一初始密码
PASSWD="Test@123456"
log_info "===== 开始批量创建用户 ====="
for user in ${USER_LIST[@]}
do
# 判断用户是否存在
id $user &>/dev/null
if [ $? -eq 0 ];then
log_info "用户 $user 已存在,跳过创建"
else
# 创建用户
useradd $user
# 设置密码
echo $PASSWD | passwd –stdin $user &>/dev/null
# 强制首次登录修改密码
chage -d 0 $user
log_info "用户 $user 创建成功,初始密码:$PASSWD"
fi
done
log_info "===== 所有用户创建完成 ====="
三、脚本核心功能说明
-
id 用户名 判断用户是否存在,避免重复创建报错
-
passwd –stdin 非交互式设置密码
-
chage -d 0 强制用户下次登录必须修改密码
-
全程日志记录,方便审计
四、扩展:脚本传参创建自定义用户
不写死列表,通过外部传参批量创建:
#!/bin/bash
if [ $# -eq 0 ];then
echo "用法:$0 用户名1 用户名2 …"
exit 1
fi
PASSWD="Admin@123456"
for user in $@
do
id $user &>/dev/null || useradd $user
echo $PASSWD | passwd –stdin $user
echo "用户 $user 创建完成"
done
五、删除批量用户(附带脚本)
#!/bin/bash
USER_LIST=(test01 test02 test03 test04 test05)
for user in ${USER_LIST[@]}
do
userdel -r $user
echo "删除用户:$user"
done




