Напишите сценарий для создания пользователей с заранее определенными паролями

Мне нужен простой скрипт.

Один файл с именем userID состоит из 10 unixID, а другой файл с именем passwd состоит из 10 паролей для этих 10 unixID в файле userID . Первое слово каждого файла представляет unixID и соответствующий passwd для этого unixID.

Я думаю, что ему нужно будет выполнить два цикла или что-то, чтобы назначить пароль для этого конкретного идентификатора пользователя

У кого-нибудь есть предложения?

Вы можете использовать дескрипторы файлов для чтения ввода из двух файлов за один цикл. Вот пример:

 #!/bin/bash # Assign file descriptors to users and passwords files exec 3< users.txt exec 4< passwords.txt # Read user and password while read iuser <&3 && read ipasswd <&4 ; do # Just print this for debugging printf "\tCreating user: %s with password: %s\n" $iuser $ipasswd # Create the user with adduser (you can add whichever option you like) adduser $iuser # Assign the password to the user, passwd must read it from stdin echo $ipasswd | passwd --stdin $iuser done 

Обратите внимание, что passwd просят прочитать пароль из stdin . Возможно, вам придется добавить множество проверок здравомыслия к вышеуказанному коду, например, проверить, существуют ли файлы, имена пользователей не имеют пробелов, пользователь еще не существует в системе и т. Д. Вы также можете расширить скрипт, чтобы принять оба файла имена в качестве входных аргументов.

Этот ответ на переполнение стека очень помог.

Ну, если бы я был вами, я бы просто сделал csv unixID, пароль, затем

  while IFS=',' read -ra VARARRAY; do #The userid would be $VARARRAY[0] and passwd would be $VARARRAY[1] #Create user with distro's preferred method here. done 

Чтобы запустить его и сохранить его динамичным, я бы

  cat newusers | ./createNewUsers.sh 

Впоследствии вы могли

  rm newusers 

так что пароли не задерживаются.

stackoverflow немного помог создать код.