Создать учетную запись пользователя на многих серверах

У меня есть 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

Другие вопросы по тегам