[原文链接,欢迎访问(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
第一步:读取用户名和密码
- 创建
user.sh文件 - 按行读取用户信息
[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
该博客介绍了如何通过Shell脚本,从指定格式的文件中读取用户名和密码,然后批量在Linux系统中创建用户。内容包括读取文件、分割用户信息、添加用户及完善脚本的步骤。
3115

被折叠的 条评论
为什么被折叠?



