批量创建多个用户的需求在生产环境下用的不多,但是经常会在面试时的笔试题上看到,本案例就是批量创建多个用户。具体要求如下:
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用户才能进行此操作)