Создать учетную запись пользователя на многих серверах
У меня есть users.txt
со следующим содержанием:
ip1 user1 password1
ip2 user2 password2
....
ipN userN passwordN
Я хочу создать одного пользователя на каждом из этих серверов. Я хочу использовать этот скрипт на каждом сервере:
user_login="some_user7"
password="blablabla"
sudo adduser $user_login --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo -e "$password\n$password\n" | sudo passwd $user_login
Я не понимаю, как правильно подключиться на каждом сервере и выполнить этот скрипт.
PS Я не хочу использовать SSH-открытые ключи. Я хочу использовать только логины и пароли.
1 ответ
Выполнить скрипт на сервере с помощью ssh просто, что-то вроде:
cat script.sh | ssh someserver
Однако вы, вероятно, не хотите выполнять один и тот же сценарий на каждом сервере. Вам понадобится другой скрипт для чтения вашего users.txt и из этого файла создайте файлы скриптов для каждой строки в users.txt перед вызовом ssh с вновь созданным скриптом в качестве входных данных. Вы можете использовать sed, чтобы заменить пользователя и пароль в некотором файле шаблона.
Или вы можете использовать awk для выполнения всей работы:
awk '{system("ssh \""$1 " sudo adduser " $2 " --disable-password ; echo -e \\\""$3"\\n"$3"\\n\\\" | sudo passwd "$2"\"")}' < users.txt