一、批量创建用户

1、参考网址

# https://blog.csdn/qq_41833774/article/details/79716271

# https://blog.csdn/FangXiaXin/article/details/80057527

 2、代码及注释:

# (1)指定密码:

# 法一:用户名无规律,并存放于文本
#!/bin/bash
ULIST=$(cat /root/user.txt) ## /root/user.txt里存放用户名,一个用户名为一行
for UNAME in $ULIST ## 可写成 for user in `cat /root/user.txt`
do
    useradd $UNAME # 添加指定user
    echo "123456" | passwd --stdin $UNAME # 设置密码
done

# 执行 chpasswd 命令,以 root 的身份执行 /usr/sbin/chpasswd,
# chpasswd 将经过 /usr/sbin/chpasswd 命令编译过的密码写入 /etc/passwd 的密码栏
chpasswd < /root/passwd 

# 确定密码写入 /etc/passwd 的密码栏后,
# 执行命令 /usr/sbin/pwconv 命令将密码编译为 shadow password,并将结果写入/etc/shadow
pwconv

cat /root/passwd

# 法二:用户名前缀有相同之处
#!/bin/bash
PREFIX="stu"
i=1
while [$i -le 20]
do
    useradd ${PREFIX}$i
    echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null
    let i++
done
# (2)随机密码,不保存:

# 法一:
#!/bin/bash
for user in test{01..10}
do
    useradd $user
    echo `date + %s%N` | md5sum | egrep '.{8}' -o | passwd --stdin $user
done

# 法二:
#!/bin/bash
i=1
while [$i -le 10]
do 
    useradd -r test$i
    echo `date + %s%N` | md5sum | egrep '.{8}' -o | passwd --stdin test$i
    let i++
done
# (3)随机密码,并保存:

#!/bin/bash
for u in la{01..10}  ## {01..10} 即为 `seq -w 00 10`
do
    useradd $u &> /dev/null
    if [$? -eq 0]  ## 上一条命令的返回值(显示最后命令的退出状态,0表示无错误,其它值表示有错误)
    then
        echo "add user is ok"
        p=`uuidgen`
        echo $p | passwd --stdin $u &> /dev/null
        echo "$u:$p" >> /tmp/userlist
    else
        echo "add user is error"
    fi
done
  • 备注:
  • 若是批量删除用户,则将 useradd 改为 userdel
  • passwd 默认用终端作为标准输入,加上 --stdin 表示可以用任意文件做标准输入,此处用管道作为标准输入

 

ps:之前总结的

更多推荐

shell脚本编程学习(一)之批量创建用户(含密码设置)