shell练习(12)——批量生成用户,并设置密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell练习(12)——批量生成用户,并设置密码相关的知识,希望对你有一定的参考价值。

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 选项,可以将字符串中的"
"当做换行符:
echo -e "1234
1234" | 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
$p" | passwd user_$i >/dev/null 2>/dev/null
done

以上是关于shell练习(12)——批量生成用户,并设置密码的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本批量创建用户并随机生成密码

linux批量新建用户帐号脚本

Linux实战——Shell编程练习(更新12题)

Shell脚本:批量添加用户,并设置随机字符为密码

(转)通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加

shell练习