shell編寫一個批量添加用戶腳本
5.1問題
本例要求在虛擬機server0上創建/root/batchusers腳本,任務目標如下:
此腳本要求提供用戶名列表文件作為參數
如果沒有提供參數,此腳本應該給出提示Usage:/root/batchusers,退出並返回相應值
如果提供一個不存在的文件,此腳本應該給出提示Input file not found,退出並返回相應值
新用戶的登錄Shell為/bin/false,無需設置密碼
列表測試文件:http://classroom/pub/materials/userlist
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
