bash - 如何解析文本文件中的内容以在 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
解决方案
您好,您的代码的问题是,如果您在 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
注意:我也将您的用户操作放在一行中。
希望这可以帮助
推荐阅读
- php - 带有 Clover 代码覆盖率报告的 PHPUnit:测试未执行且命令退出
- python - 尝试读取使用 Python 数组模块创建的数据文件时出现问题
- php - 创建购物车 - laravel 6
- android - RecyclerView:为什么将项目移动到顶部会使其超出可见区域?
- api - 如何授予用户使用 youtube api 观看私人视频的权限?
- javascript - Vue.js v-for 不渲染组件
- c++ - 我应该有 2 个单独的类,一个用于“逻辑”,一个用于“图形界面”吗?
- javascript - Javascript条件替换不起作用
- android - layout.xml 不同的行为取决于 API 级别(25+ 工作正常,24-工作不好)
- python - 执行引用的 awk 命令行脚本的子进程语法