加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 23:08:27 所属栏目:安全 来源:网络整理
导读:1. 习题 创建user_00至user_09 共十个新的账号,并且给他们创建密码。密码要求:长度10,包含数字,大小写字母。创建时,需要将用户名和对应的密码保存到一个日志文件。 2. 分析 首先,对用户格式,可以用for循环,配合seq命令产生,具体情况如下: (1) 产生
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 "1234n1234" | 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 "$pn$p" | passwd user_$i >/dev/null 2>/dev/null
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读