Linux创建多个用户,并赋予随机密码,要求不使用循环语句。
方法一
使用基本命令useradd和passwd添加用户和添加密码。
(注:RANDOM随机生成数字(3-5个不等)。)
创建一个用户
[root@Server ~]# useradd stu01
创建多个用户就是要重复上面的命令多次,但是一个一个输入会比较麻烦,但是我们可以先生成一串序列,然后使用替换的方法将序列替换成上面的格式。
[root@Server ~]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@Server ~]#
然后我们使用sed命令将上面的序列替换成我们需要的命令
[root@Server ~]# seq -w 10|sed -r 's#(.*)#useradd stu\1#g'
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu10
这样我们就可以一次性创建多个用户了,只需要将上面的内容利用管道传输给bash就能执行命令了。
[root@Server ~]# seq -w 10|sed -r "s#(.*)#useradd stu\1#g"|bash
[root@Server ~]# tail -10 /etc/passwd
stu01:x:503:503::/home/stu01:/bin/bash
stu02:x:504:504::/home/stu02:/bin/bash
stu03:x:505:505::/home/stu03:/bin/bash
stu04:x:506:506::/home/stu04:/bin/bash
stu05:x:507:507::/home/stu05:/bin/bash
stu06:x:508:508::/home/stu06:/bin/bash
stu07:x:509:509::/home/stu07:/bin/bash
stu08:x:510:510::/home/stu08:/bin/bash
stu09:x:511:511::/home/stu09:/bin/bash
stu10:x:512:512::/home/stu10:/bin/bash
[root@Server ~]#
为这10个用户添加随机密码
基本思想和上面一样,先创建序列然后替换成我们需要的命令。
[root@Server ~]# seq -w 10|sed -r 's#(.*)#passwd stu\1#g'
passwd stu01
passwd stu02
passwd stu03
passwd stu04
passwd stu05
passwd stu06
passwd stu07
passwd stu08
passwd stu09
passwd stu10
到这里后就要一个一个输入密码比较麻烦,但是passwd有一个参数--stdin可以直接使用echo命令将密码传入进去,题目要求是创建随机密码,这里要用到一个随机变量参数RANDOM
[root@Server ~]# echo $((RANDOM))
2492
15380
20658
24952
它会生成3到5个随机数,我们可以将这些数通过管道传输给passwd然后进行密码修改。
但是修改后的密码又看不到,设置了等于没有设置,于是我们再使用追加重定向将密码再传进一个文件夹中,这样就可以既添加了随机密码又可以看到密码是多少。
[root@Server ~]# seq -w 10|sed -r 's#(.*)#jack="$((RANDOM))" ;echo $jack|passwd --stdin stu\1;echo "stu\1:$jack">>/mima.log#g'|bash
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
Changing password for user stu02.
Changing password for user stu03.
Changing password for user stu04.
Changing password for user stu05.
Changing password for user stu06.
Changing password for user stu07.
Changing password for user stu08.
Changing password for user stu09.
Changing password for user stu10.
[root@Server ~]# tail -10 /mima.log
stu01:20103
stu02:5338
stu03:12149
stu04:15405
stu05:13777
stu06:27532
stu07:28049
stu08:2620
stu09:17935
stu10:22851
方法二
使用chpasswd更改用户密码
chpasswd是一个批量更改用户密码的命令,它是先读取一个文件,然后根据文件的内容,然后更改密码,文件内容格式如下:
USERNAME:PASS WORD
冒号左边是用户名,右边是要修改的密码。
首先创建10个用户
[root@Server ~]# seq -w 10|sed -r 's#(.*)#userdel -r stu\1#g'|bash
stu01:x:502:502::/home/stu01:/bin/bash
stu02:x:503:503::/home/stu02:/bin/bash
stu03:x:504:504::/home/stu03:/bin/bash
stu04:x:505:505::/home/stu04:/bin/bash
stu05:x:506:506::/home/stu05:/bin/bash
stu06:x:507:507::/home/stu06:/bin/bash
stu07:x:508:508::/home/stu07:/bin/bash
stu08:x:509:509::/home/stu08:/bin/bash
stu09:x:510:510::/home/stu09:/bin/bash
stu10:x:511:511::/home/stu10:/bin/bash
然后在文件中写入要修改的用户名和密码
[root@Server ~]# echo stu{01..10}:$((RANDOM))|tr " " "\n" >mima.log
[root@Server ~]# cat mima.log
stu01:7119
stu02:27272
stu03:16673
stu04:24743
stu05:10044
stu06:4649
stu07:19767
stu08:29380
stu09:21922
stu10:13488
上面的tr命令作用是将前面的空格,更改成换行符,这样就不会在一行显示,因为chpasswd对文件内容格式有要求。
然后我们执行chpasswd命令,并测试是否能进入。
root@Server ~]# chpasswd < mima.log
[root@Server ~]# su - stu01
[stu01@Server ~]$ su - stu02
Password:
[stu02@Server ~]$ whoami
stu02
[stu02@Server ~]$
本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/1854534,如需转载请自行联系原作者