批量创建10个用户用脚本如何实现

描述

要求:创建10个普通用户,并给它们设置随机密码,将密码记录到一个文档里,用户名为user_01 — user_10,密码要求包含大小写字母以及数字,密码长度15位。

题目要求,让我们创建user_01到user_10共10个用户,所以需要使用循环构建01 - 10 的序列  ,方法是 "seq  -w  1 10" 这个命令执行后,会打印 ”01  02 ... 09 10" 10个数字出来,这个"-w"选项的意思是等宽,即按序列中最大宽度的数字来,本例中10就是2位,所以1个数字时会在前面补上一个0。

seq 构建序列后,需要循环,使用for即可  所以最终写成这样

 

for   i in `seq  -w  1 10`
do   
    useradd  user_$i 
done  

 

这个seq 用的还是蛮多的,所以请记住以下用法:

1)seq 支持步长, 默认步长为1,步长可以定义成2,比如 

 

seq  1 2 10
1
3
5
7
9

 

2)也可以倒序   

 

seq  10 -2 1  
10
8
6
4
2

 

创建用户没啥可说的,直接 useradd  username 即可,关键是这个随机密码这里,这个并没有标准答案,只要构建出符合要求的字符串就行,我建议的方法是使用mkpasswd命令

默认系统没有,所以你使用它之前需要先判断一下

 

if ! which  mkpasswd &>/dev/null
then   
    yum install   -y expect  
fi

 

这里有个前提,yum是centos/RHEL/Rocky系统用的,那如果是Debian/ubuntu呢,那就得使用apt安装了,所以,要想脚本完美,还需要判断系统版本。当然我们写脚本的时候就已经知道系统是啥系统了,这里就根据系统版本确定命令就行了。

mkpasswd命令 可以生成随机字符串,默认生成 9位的 ,例如

脚本

要想使用mkpasswd生成一个15位的密码  还需要加个参数 -l  (length) ,长度的意思

 

mkpasswd -l 15

 

另外 mkpasswd也可以指定生成指定字符的个数,比如 -s 2,s(special),表示特殊符号有2个。啥是特殊符号呢?比如 "*  ( )  [ ] & ^ @ # ! : ? /"等。mkpasswd -s 0 意思是特殊符号为0。另外还有几个选项:

-d  指定数字  

-C  指定大写字母    

-c 指定小写字母

生成密码后,需要给它赋值到变量里,比如   p=`mkpasswd -l 15 -s 0`。然后就是给用户设置密码了,设置密码使用passwd命令,正常设置密码 这样做  :

脚本

但这样写到脚本里 就会有问题啦,因为需要交互,脚本里肯定不合适。所以还有另外一种方法  :

脚本

这样一条命令就可以啦,写到脚本里,完美!

再往后就是将密码保存到一个文件里,题目里我虽然没有要求大家把用户名也保存,但是大家想想,如果咱们的用户名不规则,那你能知道哪个密码是哪个用户么。所以最好是将用户名 密码写到一起。

大家都知道使用 >>追加重定向,但是否忘记了,如果这个文本里就有内容呢 ?所以,最好是先将文本做一个清空的操作:

 

if  [ -f /tmp/user_pass.txt ]
then  
    rm -f /tmp/user_pass.txt
    echo  "user_$i  $p" >> /tmp/user_pass.txt
fi

 

当然这段代码要放到循环的外面去,也就是要放到脚本一开始的时候。如果在循环里面,那么脚本执行完,这个文本里就只会记录一行,大概就是这么多内容  最后再给大家发一下最终的脚本:

 

#!/bin/bash
if  [ -f /tmp/user_pass.txt ]
then  
    rm -f /tmp/user_pass.txt
fi
if ! which mkpasswd
then
    yum install -y expect
fi
for i in `seq -w 1 10`
do
    p=`mkpasswd -l 15 `
    useradd user_$i && echo "$p"| passwd --stdin user_$i
    echo "user_$i  $p" >> /tmp/user_pass.txt
done

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分