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