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,如需轉載請自行聯系原作者