Добавление пользователей из текстового файла
Я пытаюсь добавить несколько пользователей из текстового файла, а затем в группу, но я получаю эту ошибку:
'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 useradd
Ubuntu 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
утилита, это может быть проще, если у вас есть тонны пользователей для создания.