Этот вопрос уже здесь есть ответ:
Я пытаюсь добавить нескольких пользователей из текстового файла, а затем в группу, но продолжаю получать эту ошибку:
'seradd: invalid user name 'srogers
Мой текущий сценарий:
for i in $(cat users.txt)
do
echo $i
sudo useradd -m -s /bin/bash -G interns $i
done
Что я делаю не так?
Вы не даете нам понимание о Вас конкретная задача и о содержании users.txt
файл, но я мог дать несколько рекомендаций, которые устранят простые проблемы.
Сначала
Всегда окружайте все переменные двойными кавычками "
в сценариях удара. Этот простой прием помогает избежать большого количества проблем сценария. В Вашем особом случае заменяют все $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
утилита, могло бы быть легче, если у Вас есть тонны пользователей для создания.