晓夏

YoungCheung

Zhang Sir's technical way

批量创建10个用户

浏览量:802

1.批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell循环(例如:for,while等),只能用命令及管道实现。

useradd stu01 ; echo 123456 |passwd --stdin stu01  ç==命令拼接

第一个里程碑-如何生成8位随机密码

方法一:date +%N|md5sum|cut -c 1-8 

[root@YoungCheung-vm1 ~]# date +%N|md5sum |cut -c 1-8
72466012
[root@YoungCheung-vm1 ~]# date +%N|md5sum |cut -c -8
fc7c9f32

方法二:随机数 RANDOM

echo $RANDOM|md5sum |cut -c -8

方法三:

[root@YoungCheung-vm1 ~]# echo $((1+3 ))

方法四:只能生成随机数字 $((RANDOM + 10000000)

[root@YoungCheung-vm1 ~]# echo $((RANDOM + 10000000))
10029615

方法五:mkpasswd

方法六:openssl rand -base64 8

方法七:awk 'BEGIN{srand();print rand()*10000000}'

第二个里程碑-拼接出想要的结果-一个用户

useradd stu01 ; echo 随机密码 |passwd --stdin stu01
useradd stu01 ; echo $(date +%N|md5sum|cut -c 1-8) |passwd --stdin stu01

#上面的问题在于,有随机密码,但是你不知道是啥。

useradd stu01 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu01;echo stu01 $pass >>/root/mima.txt

#上面完成了设置一个用户的密码,并保存

第三个里程碑-拼接出想要结果-多个用户

# useradd stu01 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu01;echo stu01 $pass >>/root/mima.txt
# useradd stu02 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu02;echo stu02 $pass >>/root/mima.txt
# useradd stu03 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu03;echo stu03 $pass >>/root/mima.txt
# useradd stu04 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu04;echo stu04 $pass >>/root/mima.txt
# useradd stu05 ; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu05;echo stu05 $pass >>/root/mima.txt

拼接:

1.一小步:生成用户名并排列

方法一:

$ echo stu{01..10}|xargs -n1
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10

方法二:

$ echo stu{01..10}|tr " " "\n"
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10

方法三:

$ seq -f "stu%02g"  10
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10

2.第二小步-拼接完成后-找一条进行测试

$ useradd stu01; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin stu01;echo stu01$pass >>/root/mima.txt

第四个里程碑-把拼接结果交给bash执行

$ echo stu{01..10}|xargs -n1|awk '{print "useradd "$1"; pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin "$1";echo "$1" $pass >>/root/mima.txt"}'|bash

sed法:

$ echo stu{01..10}|xargs -n1|sed 's#.*#useradd &;pass=$(date +%N|md5sum|cut -c 1-8);echo $pass |passwd --stdin &;echo & $pass >>/root/mima.txt#g'

 


神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。