本文共 1059 字,大约阅读时间需要 3 分钟。
创建user_00至user_09 共十个新的账号,并且给他们创建密码。密码要求:长度10,包含数字,大小写字母。创建时,需要将用户名和对应的密码保存到一个日志文件。
首先,对用户格式,可以用for循环,配合seq命令产生,具体情况如下:
(1) 产生0-3的数字$ for i in `seq 0 03`;do echo $i; done0123(2)按照两个位宽,产生00-03的数字$ for i in `seq -w 0 03`;do echo $i; done00010203(3) 指定间隔为2,产生数字$ for i in `seq 0 2 09`;do echo $i; done02468
然后,就是考虑生成密码的办法了。随机密码用mkpasswd命令生成,这个命令需要安装expect包。
(1) 没有特殊符号,长度为10的随机密码:$ mkpasswd -s 0 -l 10EW7vp9ombq(2) 没有特殊符号,包含5个数字,长度为14的密码:$ mkpasswd -s 0 -d 5 -l 14mlOd973W3uo7sm
当我们准备好密码之后,就是更新用户的密码了。我们都知道,在linux系统,更新用户密码的命令是passwd。但是passwd在执行的时候,需要连续输入两次密码进行确认。这样,在用脚本批量生成用用户的时候,就不是那么方便了。这里有几种解决的办法:
(1)方法一,利用passwd 命令的--stdin参数,完成密码更新:echo "EW7vp9ombq" | passwd --stdin user_00(2)方法二,通过echo输出两行内容,作为passwd的两次确认输入,完成更新确认密码,echo -e 选项,可以将字符串中的"\n"当做换行符:echo -e "1234\n1234" | passwd user_01
#!/bin/bashfor i in `seq -w 0 09`do p=`mkpasswd -s 0 -l 10` useradd user_$i >/dev/null 2>/dev/null echo "user_$i $p" >> /tmp/useradd.log echo -e "$p\n$p" | passwd user_$i >/dev/null 2>/dev/nulldone
转载于:https://blog.51cto.com/hellocjq/2329478