如何解析文本文件中的内容以在bash中添加用户和密码?

时间:2019-01-22 18:27:15

标签: bash unix

我需要将用户批量添加到suse11及更低版本。我有一个脚本可以执行此操作,但是它并没有像应有的那样解析我的文件,而是为文本文件中的每个项目添加了一个用户和一个密码。

我尝试使用newusers命令,但是由于安全原因,此服务器场似乎没有将newusers作为bash模块。

我要添加的每个用户的文本文件的内容均为“ X Y”(表示用户名和密码),这就是我读取文本文件的方式

for i in $(cat UserBase.txt); do
    useradd -p $i
    echo "User $i added successfully!"
    exec chpasswd $i:$i"123"
    echo "Password for user $i added successfully!"
    usermod -G $i wheel username
    echo "User $i added successfully to wheel!"
EOF
done

正如我所说,它为读取的行中的每个项目添加一个用户,这意味着它为usr添加一个用户,为passwd添加另一个用户。这正是我不需要的。

我需要它像读取文件上的X和Y列一样,然后区分第一字段和第二字段,以便我可以像在Suse中使用用户凭据一样添加

编辑:我的文本文件格式是

username_1 password_1
username_2 password_2

1 个答案:

答案 0 :(得分:2)

您好,您的代码存在的问题是,如果对cat输出运行for循环,它将遍历文件中的所有项目,它将变为

A B

CD

进入

A B C D

因此,您应该像这样逐行读取文件:

while read user password;
do
    useradd -m -p $(openssl passwd -1 "$password") --groups wheel "$user"
done < UserBase.txt

注意:我也将您的用户操作放在一行中。

希望这会有所帮助