从文本文件添加用户

从文本文件添加用户

我正在尝试从文本文件添加多个用户,然后将其添加到一个组,但我一直收到此错误:

'seradd: invalid user name 'srogers

我当前的脚本是:

for i in $(cat users.txt)
do
  echo $i
  sudo useradd -m -s /bin/bash -G interns $i
done

我究竟做错了什么?

答案1

您没有向我们提供有关您的特定任务和users.txt文件内容的见解,但我可以提供一些可以消除简单问题的建议。

第一的

在 bash 脚本中,始终用双引号括住所有变量"。这个简单的技巧有助于避免很多脚本问题。在您的特定情况下,请将所有变量替换$i"$i"

第二

--始终在命令行末尾添加双破折号以表示命令选项的结束。当位置参数-作为其字符串的一部分时,它有助于避免出现问题。最后,带有命令的行将useradd如下所示:

$ sudo useradd -m -s /bin/bash -G interns -- "$i"

第三

考虑用户名应该满足约束。这取决于特定的 Linux 发行版,这里引用自man useraddUbuntu 14.04

   It is usually recommended to only use usernames that begin with a lower
   case letter or an underscore, followed by lower case letters, digits,
   underscores, or dashes. They can end with a dollar sign. In regular
   expression terms: [a-z_][a-z0-9_-]*[$]?

   On Debian, the only constraints are that usernames must neither start
   with a dash ('-') nor plus ('+') nor tilde ('~') nor contain a colon
   (':'), a comma (','), or a whitespace (space: ' ', end of line: '\n',
   tabulation: '\t', etc.). Note that using a slash ('/') may break the
   default algorithm for the definition of the user's home directory.

   Usernames may only be up to 32 characters long.

最后读注意其他常见错误。

还请查看newusers实用程序,如果您有大量用户需要创建,它可能会更容易。

相关内容