1. 习题
创建user_00至user_09 共十个新的账号,并且给他们创建密码。密码要求:长度10,包含数字,大小写字母。创建时,需要将用户名和对应的密码保存到一个日志文件。
2. 分析
首先,对用户格式,可以用for循环,配合seq命令产生,具体情况如下:
(1) 产生0-3的数字
$ for i in `seq 0 03`;do echo $i; done
0
1
2
3
(2)按照两个位宽,产生00-03的数字
$ for i in `seq -w 0 03`;do echo $i; done
00
01
02
03
(3) 指定间隔为2,产生数字
$ for i in `seq 0 2 09`;do echo $i; done
0
2
4
6
8
然后,就是考虑生成密码的办法了。随机密码用mkpasswd命令生成,这个命令需要安装expect包。
(1) 没有特殊符号,长度为10的随机密码:
$ mkpasswd -s 0 -l 10
EW7vp9ombq
(2) 没有特殊符号,包含5个数字,长度为14的密码:
$ mkpasswd -s 0 -d 5 -l 14
mlOd973W3uo7sm
当我们准备好密码之后,就是更新用户的密码了。我们都知道,在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
3. 脚本
#!/bin/bash
for 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/null
done
原文地址:http://blog.51cto.com/hellocjq/2329481
时间: 2024-11-09 03:08:17