ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux面试题-批量添加用户并设置8位随机密码

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

原创 Linux操作系统 作者:老男孩Linux 时间:2020-11-25 16:41:32 0 删除 编辑

  一。批量添加用户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

  [root@oldboyedu59 ——]# echo stu{013}|xargs -n1

  stu01

  stu02

  stu03

  第2个里程碑-命令拼接

  利用sed/awk 里面

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

  awk 利用 "" 双引号里面写什么 屏幕就显示什么

  [root@oldboyedu59 ——]# echo stu{013}|xargs -n1|sed -r 's#(。*)#useradd \1#g'

  useradd stu01

  useradd stu02

  useradd stu03

  [root@oldboyedu59 ——]# echo stu{013}|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 {110}

  1 2 3 4 5 6 7 8 9 10

  [root@oldboyedu59 ——]# echo {110}|sed -r 's#([0-9]+)#<\1>#g'

  <1> <2> <3> <4> <5> <6> <7> <8> <9> <10>

  [root@oldboyedu59 ——]# echo {110}|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{013}|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{013}|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{046}|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{046}|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{046}|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{046}|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

转自:https://www.oldboyedu.com/blog/1954.html


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69952968/viewspace-2736925/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
老男孩it教育——致力于帮助有志向的年轻人通过努力学习获得体面的工作和生活。专注于Linux云计算运维、Python全栈开发、网络安全、新媒体运营、容器云架构师、MySQL数据库、go语言的培训。

注册时间:2019-11-06

  • 博文量
    465
  • 访问量
    204428