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

最新文章

  1. Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)
  2. WordCount Analysis
  3. java.lang.IllegalArgumentException: No converter found for return value of type: class Person
  4. AppDomain.CurrentDomain.GetAssemblies()
  5. 一个简化的printf函数
  6. Struts学习之类型转换
  7. servlet三种实现方式之二继承GenericServlet开发
  8. Android存储之SQLiteDatbase
  9. 【PHP SDK for OpenStack/Rackspace APIs】身份验证
  10. 令人无限遐想的各种PCIe加速板卡
  11. git简单教材
  12. servlet就实现在线用户表
  13. jstl 处理字符串
  14. delphi 给EXE文件增加区段
  15. xheditor编辑器上传图片
  16. 多管齐下显神威-2017逐浪CMS开启全新建站与WEB技术革命
  17. html-盒子模型及pading和margin相关
  18. PySpark 的背后原理
  19. Atitit 类库冲突 解决方案
  20. Ajax 传包含集合的JSON

热门文章

  1. Spring Boot从入门到精通(八)日志管理实现和配置信息分析
  2. AX中Json转化成表记录
  3. DataFrame简介(一)
  4. 自动控制理论的MATLAB仿真实例(一)
  5. C++ 指针偏移的理解
  6. html5特性简要概括
  7. 【Weiss】【第03章】练习3.26:双端队列
  8. linux redis安装 5.0.2
  9. Caused by: java.lang.IllegalArgumentException
  10. 全国职业技能大赛信息安全管理与评估-MySQL弱口令利用