Shell脚本读取用户名和密码序列,并批量创建 Linux 系统的用户

该博客介绍了如何通过Shell脚本,从指定格式的文件中读取用户名和密码,然后批量在Linux系统中创建用户。内容包括读取文件、分割用户信息、添加用户及完善脚本的步骤。

[原文链接,欢迎访问(https://coderjeremy.github.io/2018/11/06/Shell读取文件并批量添加用户/)

Shell 编程,使用 Shell 编程,实现从指定格式的文件中读取用户名和密码序列,并批量创建 Linux 系统的用户。

在linux中要求从一个文件中读取用户名和密码,并批量添加账户

文件格式:

[root@localhost jeremy]# cat users.list 
apple 12345
banana 123456
orange 123123
pear 123123

第一步:读取用户名和密码

  1. 创建 user.sh文件
  2. 按行读取用户信息
[root@localhost jeremy]# vim user.sh
[root@localhost jeremy]# cat user.sh 
#!/bin/sh

cat users.list | while read line
do 
 echo $line
done
[root@localhost jeremy]# ./user.sh 
apple 12345
banana 123456
orange 123123
pear 123123

读取每一行内容并输出有多种方式

第一种 while
while read line
do
 echo $line
done < filename
>>>>>>>>>>>>>>>>>>
第二种 while
cat filename | while read line
do
 echo $line
done
>>>>>>>>>>>>>>>>>>
第三种 for
for line in `cat filename`
do 
 echo $line
done
>>>>>>>>>>>>>>>>>>
for循环在读取文件时,任何空白字符都可以作为其读取的分隔符.
while使用是换行符作为标记
ex: 
for line in $(<users.list) 结果如下
apple
12345
banana
123456
orange
123123
pear
123123

第二步:分割用户名和密码

[root@localhost jeremy]# cat user.sh 
#!/bin/sh

cat users.list | while read line
do 
 username=`echo $line | cut -f1 -d' '`
 password=`echo $line | cut -f2 -d' '`
 echo -n "USERNAME:$username PASSWORD:$password"
 echo
done 
[root@localhost jeremy]# ./user.sh 
USERNAME:apple PASSWORD:12345
USERNAME:banana PASSWORD:123456
USERNAME:orange PASSWORD:123123
USERNAME:pear PASSWORD:123123

第三步:批量添加用户

[root@localhost jeremy]# cat user.sh
#!/bin/sh

cat users.list | while read line
do 
 username=`echo $line | cut -f1 -d' '`
 password=`echo $line | cut -f2 -d' '`
 useradd $username
 echo $password | passwd --stdin $username
done 
[root@localhost jeremy]# ./user.sh 
更改用户 apple 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 banana 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 orange 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 pear 的密码 。
passwd:所有的身份验证令牌已经成功更新。

第四步:完善脚本

以上脚本再运行一便,会发现新增用户不行了。但会修改了密码.应该增加一个用户是否存在的判断.另外所有非Shell内建命令都建议使用全路径,以避免由于环境变量的问题造成command not found。最后,脚本主体要尽量少使用变量,所以需要在脚本开头定义变量.如下:

!/bin/bash
USER_INFO=/home/jeremy/users.list
USERADD=/usr/sbin/useradd
PASSWD=/usr/bin/passwd
CUT=/bin/cut
while read LINES
do
    USERNAME=`echo $LINES | $CUT -f1 -d' '`
    USERPASS=`echo $LINES | $CUT -f2 -d' '`
    $USERADD $USERNAME
    if [ $? -ne 0 ];then
        echo "$USERNAME exists,skip set password"
    else
        echo $USERPASS | $PASSWD --stdin $USERNAME
    fi
done < $USER_INFO                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值