我需要将用户批量添加到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
答案 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
注意:我也将您的用户操作放在一行中。
希望这会有所帮助