首页 > 解决方案 > 如何解析文本文件中的内容以在 bash 中添加用户和密码?

问题描述

我需要将用户批量添加到 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

标签: bashunix

解决方案


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

AB

光盘

进入

A B C D

因此,您应该逐行读取文件,例如:

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

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

希望这可以帮助


推荐阅读