Мне нужно написать скрипт, чтобы я и мои коллеги могли перезапускать разные службы на нескольких серверах.Мы все подключаемся к серверам с помощью LDAP, поэтому я хотел бы, чтобы мой сценарий подключал наших пользователей LDAP к серверу, а затем использовал sudo для перезапуска служб (я могу написать сценарий на каждом сервере для перезапуска всех необходимых служб). Прямо сейчас скрипт просто запускает команду вроде
ssh -t user@host "перезагрузка службы sudo XXX"
Проблема в том, что для каждого сервера скрипт дважды запрашивает пароль пользователя (один раз для подключения по ssh и два для команды sudo). Моя первая догадка заключалась в том, чтобы запросить у пользователя логин и пароль с помощью read -s -p, а затем использовать переменную для автоматического входа в систему с помощью ssh. По-видимому, Expect — это способ сделать это, но я не нашел способа безопасно запросить пароль в сценарии Expect или запросить его в сценарии bash и безопасно передать переменную в сценарии ожидания.
Я искал такие решения, как pssh, cluster ssh, которые, похоже, работают, но не с sudo. Я понимаю, что лучший способ сделать это — использовать ключи ssh, но, поскольку несколько пользователей должны использовать сценарий, я бы хотел использовать логин/пароль LDAP.