Как разобрать содержимое из текстового файла, чтобы добавить пользователя и пароль в Bash? - PullRequest
0 голосов
/ 22 января 2019

Мне нужно добавить пользователей в пакетном режиме к suse11 и более низким версиям.У меня есть скрипт, который делает это, но он не анализирует мой файл, как следует, вместо этого он добавляет пользователя и пароль для каждого элемента в текстовом файле.

Я пытался использовать команду newusers, но в этой ферме серверов, похоже, нет новых пользователей в качестве модуля bash, вероятно, по соображениям безопасности.

Содержимое моего текстового файла: "XY "(имеется в виду пользователь и пароль), для каждого пользователя, которого я хочу добавить, и вот как я читаю текстовый файл

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

РЕДАКТИРОВАТЬ: мой формат текстового файла

1013 *

1 Ответ

0 голосов
/ 22 января 2019

Здравствуйте, проблема с вашим кодом состоит в том, что если вы запустите цикл for для вывода cat, он будет перебирать все элементы в файле, который он получит

A B

C D

в

A B C D

Так что вы должны читать файл построчно, как:

while read user password;
do
    useradd -m -p $(openssl passwd -1 "$password") --groups wheel "$user"
done < UserBase.txt

Примечание: я также поместил ваши пользовательские действия в одну строку.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...