5案例5:編寫一個批量添加用戶腳本
5.1問題
本例要求在虛擬機server0上創建/root/batchusers腳本,任務目標如下:
- 此腳本要求提供用戶名列表文件作爲參數
- 如果沒有提供參數,此腳本應該給出提示Usage: /root/batchusers,退出並返回相應值
- 如果提供一個不存在的文件,此腳本應該給出提示Input file not found,退出並返回相應值
- 新用戶的登錄Shell爲/bin/false,無需設置密碼
- 列表測試文件:http://classroom/pub/materials/usrlist
5.2方案
單分支if選擇結構:
if 條件測試操作
then
命令序列....
fi
腳本的退出狀態:取決於退出前最後一條命令的$?值,或者“exit 整數值”指定。
列表式for循環結構:
for 變量名 in 值1 值2 值3 .. ..
do
命令序列($變量名)
done
5.3步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫batchusers批量添加用戶腳本
1)編寫腳本代碼
[root@server0 ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ] ; then
echo "Usage: /root/batchusers <userfile>" >&2
exit 1
fi
if [ ! -f $1 ] ; then
echo "Input file not found" >&2
exit 2
fi
for name in $(cat $1)
do
useradd -s /bin/false $name
done
2)添加x執行權限
[root@server0 ~]# chmod +x /root/batchusers
步驟二:測試batchusers批量添加用戶腳本
1)下載用戶列表測試文件
[root@server0 ~]# wget http://classroom/pub/materials/userlist -O /root/userlist
.. ..
2016-11-27 17:23:32 (2.83 MB/s) - ‘/root/userlist’ saved [27/27]
[root@server0 ~]# cat /root/userlist //檢查下載文件
duanwu
zhongqiu
zhsan
lisi
2)實現批量添加用戶:
[root@server0 ~]# /root/batchusers /root/userlist
[root@server0 ~]# id duanwu
uid=1006(duanwu) gid=1006(duanwu) groups=1006(duanwu)
3)測試其他異常處理:
[root@server0 ~]# /root/batchusers //未提供列表文件
Usage: /root/batchusers <userfile>
[root@server0 ~]# echo $?
1
[root@server0 ~]# /root/batchusers /root/userlist.txt //提供的列表文件找不到
Input file not found
[root@server0 ~]# echo $?
2