批量添加用户账号
具体步骤
1.创建一个users.txt文件
2.添加用户名字到这个文件
3.编写脚本
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME
done
脚本解释
这个脚本是一个Bash shell脚本,用于从/root/users.txt文件中读取一系列用户名,并为每个用户名创建一个新的用户账户,同时设置这些用户的密码为123456
读取用户名列表
ULIST=$(cat /root/users.txt)
这一行使用cat命令读取/root/users.txt文件的内容,并将这些内容赋值给变量ULIST
循环创建用户并设置密码
for UNAME in $ULIST
这一行开始一个for循环,它将遍历$ULIST变量中的每个用户名(以空格为分隔符)
useradd $UNAME
在循环体内,useradd命令用于创建一个新的用户账户,用户名为$UNAME(即当前循环中的用户名)
echo "123456" | passwd --stdin $UNAME
这一行使用管道将echo "123456"命令的输出(即密码123456)传递给passwd --stdin $UNAME命令
passwd --stdin选项允许从标准输入读取密码,并将其设置为指定用户的密码
4.加执行权限
5.执行脚本,密码更改成功
如果想这个shell脚本不停的执行,该怎么办?
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
id $UNAME > /dev/null 2>&1
if [ $? -eq 0 ];then
read -p "用户$UNAME 已存在,是否删除原用户,新建该用户(Y/N)" flag
if [ $flag == "Y" ];then
userdel -r $UNAME
useradd $UNAME
echo "123456" | passwd --stdin $UNAME > /dev/null
echo "用户$UNAME 删除并重新创建成功!"
fi
else
useradd $UNAME
echo "123456" | passwd --stdin $UNAME > /dev/null
echo "用户$UNAME创建成功"
fi
done
(1)脚本解释
id $UNAME > /dev/null 2>&1
这一行使用 id 命令来检查用户 $UNAME 是否存在。> /dev/null 2>&1 使得所有的标准输出和标准错误都被重定向到 /dev/null,即忽略它们
if [ $? -eq 0 ];then
在 Bash 脚本中,$?
是一个特殊的变量,它表示最后一个命令的退出状态。退出状态是一个数字,通常,如果命令成功执行,那么退出状态为 0
,否则为非零值
[ $? -eq 0 ]
是一个条件测试,它检查上一个命令的退出状态是否为 0
(即是否成功执行)。-eq
是一个整数比较运算符,用于检查两个整数是否相等
整个 if [ $? -eq 0 ]; then
语句的意思是:如果上一个命令成功执行(返回状态为 0
),则执行 then
后面的代码块
所以如果上一行(id $UNAME)命令成功执行(返回值为 0),则执行此 if 语句
read -p "用户$UNAME 已存在,是否删除原用户,新建该用户(Y/N)" flag
提示用户是否要删除并重新创建已存在的用户。用户输入的值被赋给变量 flag
if [ $flag == "Y" ];then
如果用户输入了 "Y",则执行此 if 语句
userdel -r $UNAME
删除用户 $UNAME 以及其家目录
useradd $UNAME
添加新用户 $UNAME
(2)执行脚本
结果如上,成功!