天天看點

linux實戰考試題:批量建立使用者和密碼-看看你會麼?

 老男孩教育第五關實戰考試題:批量建立10個使用者stu01-stu10,并且設定随機8位密碼,要求不能用shell的循環(例如:for,while等),隻能用linux指令及管道實作。

方法1:

[root@oldboy /]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1 ; pass=$((RANDOM+10000000)); echo "$pass"|passwd --stdin \1; echo -e "\1 \t `echo "$pass"`">>/tmp/oldboy.log#g'|bash

上述指令實際就是再拼N條下面的指令的組合,舉一條指令stu01使用者的過程拆解如下:

useradd stu01 ; 

pass=$((RANDOM+10000000)); 

echo "$pass"|passwd --stdin stu01; 

echo -e "stu01        `echo "$pass"`">>/tmp/oldboy.log

特别說明:如果用shell循環結構會更簡單,之是以限制使用循環的目的是鍛煉學生的基礎指令運用

能力,學到現在還沒學到SHELL循環課程呢

方法2:來自酒醉飯飽

echo stu{11..12}|xargs -n1 useradd ;echo stu{11..12}:`cat /dev/urandom|tr -dc 0-9|fold -w8|head -1`|xargs -n1|tee -a pass.txt|chpasswd 

方法3:來自D調的華麗

有個參數寫錯了, cut時應該取第二個字段 應是 -f2  結果應該是這樣: echo stu{21..30} | tr ' ' '\n' | sed -e 's/^/useradd /' -e 's/\(stu[0-9]\{2\}\)$/\1 \&\& echo "\1:`echo $[$RANDOM**3] | cut -c1-8`" | tee -a userInfo.txt | cut -d: -f2 | passwd --stdin \1/' | bash

功能: 建立10個使用者 分别是 stu21-stu30 其密碼是用随機數變量RANDOM生成,均儲存至 userInfo.txt中,格式: username:passwd   這個寫的不算好  如果有更好的一定要分享哦!  上面的随機數 我之前是用日期生成的,是不對的,因為有可能會有重複現象,是以我後來幹脆用RANDOM**3取其前8位,可確定唯一性

echo stu{01..10} |tr ' ' '\n'|sed -rn 's@^(.*)$@useradd \1 ; echo $RANDOM|md5sum|cut -c 1-8 >/data/\1;cat /data/\1|passwd --stdin \1@gp'|bash

此題無法自己實作的同學都屬于指令基礎不過關,需要加足馬力下功夫。

繼續閱讀