码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-12-12 17:36:00      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:换行符   user   通过   生成   批量创建   连续   分析   就是   bin   

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

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

标签:换行符   user   通过   生成   批量创建   连续   分析   就是   bin   

原文地址:http://blog.51cto.com/hellocjq/2329481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!