天天看点

Linux创建多个用户,并赋予随机密码,不使用循环语句

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,如需转载请自行联系原作者

继续阅读