批量创建多个用户的需求在生产环境下用的不多,但是经常会在面试时的笔试题上看到,本案例就是批量创建多个用户。具体要求如下:

1)批量创建100个用户;

2)用户名为user_01 - user_100;

3)给所有用户都设定一个随机密码,12位长度,且需要包含大小写字母及数字;

4)并把用户的密码保存到 /data/user_passwd 文件中;

5)这100个用户同属于users组。

参考脚本如下:

#!/bin/bash#批量添加100个用户,user_01 - user_100#检查是否有mkpasswd命令,没有则安装if ! which mkpasswd $>/dev/nullthen
    echo "没有mkpasswd命令,安装该命令:"
    yum install -y expectfi#判断 /data/user_passwd 文件是否存在#若存在,应该先删除[ -f /data/user_passwd ] && rm -rf /data/user_passwd#100为三位数,只能遍历到99for n in `seq -w 1 99`do
    pass=`mkpasswd -l 12 -s 0`
    echo "添加用户user_100"
    
    useradd -g users user_$n
    echo "给用户user_$n设定密码"
    echo $pass | passwd --stdin user_$n
    echo "user_$n $pass" >> /data/user_passwddonepass=`mkpasswd -l 12 -s 0`echo "添加用户user_100"useradd -g users user_100echo "给用户user_100设定密码"echo $pass | passwd --stdin user_100echo "user_100 $pass" >> /data/user_passwd

脚本中,

1)mkpasswd -s 指定特殊字符个数

2)如果遍历到100,那就是user_001 - user_100

3)passwd --stdin 从标准输入读取令牌,从而更改密码(只有root用户才能进行此操作)