创建一个添加用户的脚本

简介: 在 system1 上创建一个脚本,名为 /root/mkusers , 此脚本能实现为系统 system1 创建本地用户, 并且这些用户的用户名来自一个包含用户名列表的文件。

描述:在 system1 上创建一个脚本,名为 /root/mkusers , 此脚本能实现为系统 system1 创建本地用户, 并且这些用户的用户名来自一个包含用户名列表的文件。同时满足下列要求:

此脚本要求提供一个参数,此参数就是包含用户名列表的文件

如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/mkusers userfile 然后退出并返回相应的值

如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值

创建的用户登录shell为 /bin/false

此脚本不需要为用户设置密码

[root@server0 ~]# wget http://rhgls.domain1.example.com/materials/userlist
[root@server0 ~]# cat userlist
clearlove
Uzi
jack
Faker
[root@server0 ~]# vim /root/mksuers
#!/bin/bash
if [ $# -eq 0 ];then
    echo "Usage:/root/mkusers userfile"
    exit 1
fi
if [ ! -f $1 ];then
    echo "Input file not found"
    exit 1
fi
while read line
do
useradd -s /bin/false $line
done < $1
[root@server0 ~]# chmod +x /root/mksuers
[root@server0 ~]# sh /root/mksuers
Usage:/root/mkusers userfile
[root@server0 ~]# sh /root/mksuers mmm
Input file not found
[root@server0 ~]# sh /root/mksuers userlist
[root@server0 ~]# id Uzi
uid=1007(Uzi) gid=1007(Uzi) groups=1007(Uzi)
[root@server0 ~]# id Faker
uid=1009(Faker) gid=1009(Faker) groups=1009(Faker)
[root@server0 ~]# id clearlove
uid=1006(clearlove) gid=1006(clearlove) groups=1006(clearlove)

while read ilne练习


#### 题目要求

计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。例如a.txt内容如下:

12aa*lkjskdj

alskdflkskdjflkjj

我们脚本名字为 ncount.sh, 运行它时:

bash ncount.sh a.txt

输出结果应该为:

2

0

sum:2


#### 参考答案

```

#!/bin/bash

sum=0

whilereadline

do

line_n=`echo$line|sed's/[^0-9]//g'|wc-L`

echo$line_n

sum=$[$sum+$line_n]

done< $1

echo"sum:$sum"


当我们输入的字段比变量数目多时,最后一个变量的值将不只一个字段,而是所有剩余的内容;当输入字段比变量数少时,多余的变量将是空值,你可以自己试试。现在我们再来看


while read line


do

      …

done < file


read通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;然后循环处理file的第二行、第三行。。。一直到file的最后一行。还记得while根据其后的命令退出状态来判断是否执行循环体吗?是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续进行;当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出。


另一种也很常见的用法:

command | while read line


do

   …

done


如果你还记得管道的用法,这个结构应该不难理解吧。command命令的输出作为read循环的输入,这种结构长用于处理超过一行的输出,当然awk也很擅长做这种事。

目录
相关文章
|
8月前
|
弹性计算 运维 Shell
创建用户脚本
【4月更文挑战第29天】
51 1
|
开发工具 数据安全/隐私保护
新建的普通用户无法使用sudo的问题
新建的普通用户无法使用sudo的问题
151 0
|
Shell 数据安全/隐私保护
shell脚本之---批量用户管理
shell脚本之---批量用户管理
|
Linux Shell 编译器
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
415 0
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
|
Shell 数据安全/隐私保护
使用 shell 脚本批量创建用户详解资料
for循环创建用户,md5sum 加密
341 0
Confluence 6 自动添加用户到用户组
默认组成员(Default Group Memberships) 选项在 Confluence 3.5 及后续版本和 JIRA 4.3.3 及后续版本中可用。
1351 0
|
Shell 数据安全/隐私保护 云计算

热门文章

最新文章