Задать вопрос
@danacn

Атоматизируем ssh подключение при помощи expect?

Есть bash скрипт который при определённых условиях должен подключаться по ssh к разным хостам и забирать у них файлы. Для автоматизации данного процесса в скрипте создана функция для подключения с используется expect.
SSH1() {
#Список хостов:
HOSTS=$(cat /home/ip.txt | grep "client-$num" | awk '{print $2}')
#Команды для expect:
COMM="
#Соедиение ssh:
spawn scp -r client-$num@$HOSTS:/home/client/ /etc/openvpn/keys/
expect \"*(yes/no)?*\" {send \"yes\r\"}
expect \"Password:\"
send \"$PASSWD\r\"
#Завершение выполнения expect:
expect eof
"
#Запуск expect с набором команд:
expect -c "$COMM"
}


После того как файлы были забраны у хоста, необходимо проверить эти файли и выполнить еще пару команд.
Но все команды которые стоят после данной функции выводиться в консоли с "+" в начале и не выполняться. Я так понимаю, что expect воспринимает их как свои команды. Как это исправить?
  • Вопрос задан
  • 354 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Зачем вам экспект?
Авторизация в ssh по паролям - прошлый век.

Настройте SSH ключи и просто выполняйт scp без паролей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы