系统运维

Linux面试题-批量添加用户并设置8位随机密码

时间:2010-12-5 17:23:32  作者:系统运维   来源:人工智能  查看:  评论:0
内容摘要:一.批量添加用户stu01 stu02 stu03 并设置123456化简为 添加3个用户设置固定密码1.最终目标:useradd stu01 ;echo 123456|passwd --stdin

一.批量添加用户stu01 stu02 stu03 并设置123456

化简为 添加3个用户设置固定密码

1.最终目标:

useradd stu01 ;echo 123456|passwd --stdin stu01 useradd stu02 ;echo 123456|passwd --stdin stu02 useradd stu03 ;echo 123456|passwd --stdin stu03

2.第1个里程碑-生成用户名

方法1

Linux面试题-批量添加用户并设置8位随机密码

[root@oldboyedu59 ~]# echo stu{01..3}|xargs -n1 stu01 stu02 stu03

第2个里程碑-命令拼接

利用sed/awk 里面

sed s###g 后两个井号之间写什么 屏幕就显示什么

awk 利用 "" 双引号里面写什么 屏幕就显示什么 [root@oldboyedu59 ~]# echo stu{01..3}|xargs -n1|sed -r s#(.*)#useradd \1#g useradd stu01 useradd stu02 useradd stu03 [root@oldboyedu59 ~]# echo stu{01..3}|xargs -n1|sed -r s#(.*)#useradd \1;echo 123456|passwd --stdin \1#g useradd stu01;echo 123456|passwd --stdin stu01 useradd stu02;echo 123456|passwd --stdin stu02 useradd stu03;echo 123456|passwd --stdin stu03

补充:

& 符号在sed命令中s###g 表示前面正则匹配到的面密码内容 [root@oldboyedu59 ~]# echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root@oldboyedu59 ~]# echo {1..10}|sed -r s#([0-9]+)#<\1>#g <1> <2> <3> <4> <5> <6> <7> <8> <9> <10> [root@oldboyedu59 ~]# echo {1..10}|sed -r s#[0-9]+#<&>#g <1> <2> <3> <4> <5> <6> <7> <8> <9> <10>

第3个里程碑-把内容运行

bash 命令解释器

[root@oldboyedu59 ~]# echo pwd pwd [root@oldboyedu59 ~]# echo pwd|bash /root [root@oldboyedu59 ~]# echo hostname hostname [root@oldboyedu59 ~]# echo hostname |bash oldboyedu59

找一个 进行测试 测试成功最终交给bash运行

[root@oldboyedu59 ~]# useradd stu02;echo 123456|passwd --stdin stu02 Changing password for user stu02. passwd: all authentication tokens updated successfully.

交给bash运行

[root@oldboyedu59 ~]# echo stu{01..3}|xargs -n1|sed -r s#(.*)#useradd \1;echo 123456|passwd --stdin \1#g |bash Changing password for user stu01. passwd: all authentication tokens updated successfully. useradd: user stu02 already exists Changing password for user stu02. passwd: all authentication tokens updated successfully. Changing password for user stu03. passwd: all authentication tokens updated successfully.

二.批量添加用户stu04 stu05 stu06 随机8位密码

化简为 添加3个用户设置随机密码

第1个里程碑-生成用户名

方法1

[root@oldboyedu59 ~]# echo stu{01..3}|xargs -n1 stu01 stu02 stu03

第2个里程碑-生成随机密码

方法1 tr + head

[root@oldboyedu59 ~]# tr -cd a-zA-Z0-9 </dev/urandom |head -c8 B0iV36fZ[root@oldboyedu59 ~]# 方法2 date +md5sum/sha512sum + head [root@oldboyedu59 ~]# date +%N 211379317

第3个里程碑-命令拼接

需要通过sed/awk拼接出下面的4个命令

useradd stu06;

pass=date +%N;

echo pass∣passwd−−stdinstu06;echopass stu06 >>/root/pass.txt

通过sed/awk拼接后,站群服务器想要的试题随机结果为:

useradd stu04; pass=`date +%N`; echo $pass |passwd --stdin stu04 ; echo $pass stu04 >>/root/pass.txt useradd stu05; pass=`date +%N`; echo $pass |passwd --stdin stu05 ; echo $pass stu05 >>/root/pass.txt useradd stu06; pass=`date +%N`; echo $pass |passwd --stdin stu06 ; echo $pass stu06 >>/root/pass.txt

拼接的云服务器命令如下:

[root@oldboyedu59 ~]# echo stu{04..6}|xargs -n1 |sed s#.*#useradd &;p=$(date +%N);echo $p|passwd --stdin &;echo $p & >>/p.txt#g useradd stu04;p=$(date +%N);echo $p|passwd --stdin stu04;echo $p stu04 >>/p.txt useradd stu05;p=$(date +%N);echo $p|passwd --stdin stu05;echo $p stu05 >>/p.txt useradd stu06;p=$(date +%N);echo $p|passwd --stdin stu06;echo $p stu06 >>/p.txt

上面命令分步拆开样子:

echo stu{04..6}|xargs -n1 |sed s#.*# useradd &; p=$(date +%N); echo $p|passwd --stdin &; echo $p & >>/p.txt#

上面随便找1条 执行 测试是否ok 测试成功就可以交给bash执行

[root@oldboyedu59 ~]# useradd stu05;p=$(date +%N);echo $p|passwd --stdin stu05;echo $p stu05 >>/p.txt Changing password for user stu05. passwd: all authentication tokens updated successfully. [root@oldboyedu59 ~]# id stu05 uid=1008(stu05) gid=1009(stu05) groups=1009(stu05) [root@oldboyedu59 ~]# su - oldboy Last login: Thu Apr 25 09:28:20 CST 2019 from 10.0.0.1 on pts/2 [oldboy@oldboyedu59 ~]$ logout [root@oldboyedu59 ~]# cat /p.txt 209574583 stu05 [root@oldboyedu59 ~]# su - oldboy Last login: Thu Apr 25 12:03:36 CST 2019 on pts/0 [oldboy@oldboyedu59 ~]$ su - stu05 Password: [stu05@oldboyedu59 ~]$

第4个里程碑-交给bash执行并测试

交给bash执行

[root@oldboyedu59 ~]# echo stu{04..6}|xargs -n1 |sed s#.*#useradd &;p=$(date +%N);echo $p|passwd --stdin &;echo $p & >>/p.txt#g useradd stu04;p=$(date +%N);echo $p|passwd --stdin stu04;echo $p stu04 >>/p.txt useradd stu05;p=$(date +%N);echo $p|passwd --stdin stu05;echo $p stu05 >>/p.txt useradd stu06;p=$(date +%N);echo $p|passwd --stdin stu06;echo $p stu06 >>/p.txt [root@oldboyedu59 ~]# echo stu{04..6}|xargs -n1 |sed s#.*#useradd &;p=$(date +%N);echo $p|passwd --stdin &;echo $p & >>/p.txt#g|bash Changing password for user stu04. passwd: all authentication tokens updated successfully. useradd: user stu05 already exists Changing password for user stu05. passwd: all authentication tokens updated successfully. Changing password for user stu06. passwd: all authentication tokens updated successfully. [root@oldboyedu59 ~]# cat /p.txt 209574583 stu05 570581626 stu04 600781084 stu05 660376548 stu06

执行后的免费源码下载测试

[root@oldboyedu59 ~]# cat /p.txt 209574583 stu05 570581626 stu04 600781084 stu05 660376548 stu06 [root@oldboyedu59 ~]# [root@oldboyedu59 ~]# su - oldboy Last login: Thu Apr 25 12:03:45 CST 2019 on pts/0 [oldboy@oldboyedu59 ~]$ su - stu06 Password: [oldboy@oldboyedu59 ~]$ su - stu05 Password: Last login: Thu Apr 25 12:04:01 CST 2019 on pts/0 [stu05@oldboyedu59 ~]$ logout [oldboy@oldboyedu59 ~]$ logout

总结:

1.理解命令拼接:sed/awk 形式命令 最后交给bash执行

2.sed &

copyright © 2025 powered by 编程之道  滇ICP备2023006006号-34sitemap