shell練習(12)——批量生成用戶,並設置密碼
阿新 • • 發佈:2018-12-12
通過 生成 連續 -- bash 執行 一個 習題 系統 1. 習題
創建user_00至user_09 共十個新的賬號,並且給他們創建密碼。密碼要求:長度10,包含數字,大小寫字母。創建時,需要將用戶名和對應的密碼保存到一個日誌文件。
2. 分析
首先,對用戶格式,可以用for循環,配合seq命令產生,具體情況如下:
(1) 產生0-3的數字 $ for i in `seq 0 03`;do echo $i; done 0 1 2 3 (2)按照兩個位寬,產生00-03的數字 $ for i in `seq -w 0 03`;do echo $i; done 00 01 02 03 (3) 指定間隔為2,產生數字 $ for i in `seq 0 2 09`;do echo $i; done 0 2 4 6 8
然後,就是考慮生成密碼的辦法了。隨機密碼用mkpasswd命令生成,這個命令需要安裝expect包。
(1) 沒有特殊符號,長度為10的隨機密碼:
$ mkpasswd -s 0 -l 10
EW7vp9ombq
(2) 沒有特殊符號,包含5個數字,長度為14的密碼:
$ mkpasswd -s 0 -d 5 -l 14
mlOd973W3uo7sm
當我們準備好密碼之後,就是更新用戶的密碼了。我們都知道,在linux系統,更新用戶密碼的命令是passwd。但是passwd在執行的時候,需要連續輸入兩次密碼進行確認。這樣,在用腳本批量生成用用戶的時候,就不是那麽方便了。這裏有幾種解決的辦法:
(1)方法一,利用passwd 命令的--stdin參數,完成密碼更新:
echo "EW7vp9ombq" | passwd --stdin user_00
(2)方法二,通過echo輸出兩行內容,作為passwd的兩次確認輸入,完成更新確認密碼,
echo -e 選項,可以將字符串中的"\n"當做換行符:
echo -e "1234\n1234" | passwd user_01
3. 腳本
#!/bin/bash for i in `seq -w 0 09` do p=`mkpasswd -s 0 -l 10` useradd user_$i >/dev/null 2>/dev/null echo "user_$i $p" >> /tmp/useradd.log echo -e "$p\n$p" | passwd user_$i >/dev/null 2>/dev/null done
shell練習(12)——批量生成用戶,並設置密碼