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