繁体   English   中英

如何添加多个用户,然后使用 bash 脚本将它们添加到 linux 中的组

[英]how to add multiple users and afterwards add them to groups in linux using bash script

我有一个名为 Usernames.txt 的 txt 文件,其中包含此类信息(名称后跟组类型)。 例如(这些是少数实例,因为有更多的输入。)

用户名.txt:

ellipsiscoterie,visitor
magnetcommonest,visitor
belateddefensive,staff
wizardmeans,visitor
bobstercaramelize,staff

在下面显示的脚本中,我尝试将每一行的名称添加为用户并将每个新用户分配到其各自的组。 但是我遇到了这个错误。 输出不是我所想的。 希望有人能帮帮我,谢谢。

基本上这就是我想要做的,但对于 txt 文件中的每一行。 例如sudo useradd bobstercaramelize (这是用户的名称)和sudo usermod -a -G staff bobstercaremelize

错误:

createUsers.sh: line 4: $'[visitor\r': command not found

代码:

#!/bin/bash 
while read line; do
arrIN=(${line//,/ })
if [${arrIN[1]} = "visitor" ]; then
  sudo useradd ${arrIN[0]}
  sudo usermod -a -G  visitors ${arrIN[0]}
else
 sudo useradd ${arrIN[0]}
 sudo usermod -a -G staff ${arrIN[0]}
fi
done < Usernames.txt

首先,错误似乎源于缺少空格: [${arrIN[1]} = "visitor" ]需要为[ ${arrIN[1]} = "visitor" ] 注意[${arrIN[1]}之间的空格。

其次,错误消息中的\\r表示Usernames.txt文件的行尾可能存在问题。 尝试使用 Unix/Linux 行结尾保存它(即每行应仅以\\n结尾)。

第三,您可能需要考虑以不同方式解析文件的内容:

while IFS=, read user group; do
    if [ "${group}" = "visitor" ]; then
        sudo useradd "${user}"
        sudo usermod -a -G  visitors "${user}"
    else
        sudo useradd "${user}"
        sudo usermod -a -G staff "${user}"
    fi
done < Usernames.txt

这样, read为您进行拆分,使事情变得更容易、更精确和更具可读性。 我还在适当的地方添加了双引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM