shell脚本实战2

shell脚本的目标是让系统管理员过的更轻松。如果你碰巧工作在一个拥有大量用户的环境中,最烦人的工作之一就是创建新用户账号。好在可以使用while循环来降低工作的难度。

  你不用为每个需要创建的新用户账户手动输入useradd命令,而是可以将需要添加的新用户账户放入一个文件文件中,然后创建一个简单的脚本进行处理。这个文本文件的格式为userid,user name

第一个条目是你为新用户账户选用的用户ID。第二个条目是用户的全名。两个值之间使用逗号分隔,这样就形成了一种名为逗号分隔值的文件格式(或者是.csv)。这种文件格式在电子表格中机器厂件,所以你可以轻松地在电子表格程序中创建用户账户列表,,然后将其保存成.csv格式,以备shell脚本读取及处理。

   要读取文件中的数据,得用上一点shell脚本编程技巧。我们将IFS分隔符设置成逗号,并将其放入while语句的条件测试部分,然后使用read命令读取文件中的各行。实现代码如下:

whlie IFS= ','   read -r userid name

read命令会自动读取.csv文本文件的下一行内容。所以不需要专门再写一个循环来处理。当read命令返回FALSE时(也就是读取完整个文件时),while命令就会推出。妙极了!

  要想把数据从文件中送入while命令,只需要在while命令尾部使用一个重定向符就可以了。

将各个部分处理过程写成脚本如下。

#! /bin/bash
# process new user accounts
# useradd -c comment  -m mkdir a new directory for new user

input="users.csv"
while IFS=','  read -r userid name
do
   echo "adding $userid"
   useradd -c "$name" -m $userid
done < "$input"
~

注释:useradd添加用户的时候 -c:是在创建新用户的时候添加了一个描述comment

                                                 -m 是创建用户的时候,若用户对应需要创建的家目录不存在,则创建一个家目录

                                                -M 是创建用户的时候,不创建家目录

$input变量指向数据文件,并且该变量被作为while命令的重定向数据。users.csv文件内容如下。

[root@ecs robin]#
[root@ecs robin]# cat users.csv
rich,Ricard Blum
christine,Christine Bresnahan
barbara,Barbara Blum
tim,Timothy Bresnahan

注意:users.csv文件最后一行不能由空格,否则就有useradd 空用户报错

必须作为root用户才能运行这个脚本,因为useradd命令需要root权限。

[root@ecs robin]# ./touchmultiuser.sh
adding rich
adding christine
adding barbara
adding tim
来看一眼/etc/passwd,你就会发现账户已经创建好了。

# tail /etc/passwd

[root@ecs robin]# cat /etc/passwd | tail -n 5
mysql:x:997:993:MySQL server:/var/lib/mysql:/sbin/nologin
rich:x:1000:1000:Ricard Blum:/home/rich:/bin/bash
christine:x:1001:1001:Christine Bresnahan:/home/christine:/bin/bash
barbara:x:1002:1002:Barbara Blum:/home/barbara:/bin/bash
tim:x:1003:1003:Timothy Bresnahan:/home/tim:/bin/bash

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值