LINUX.ORG.RU

Подключение по ssh при помощи expect

 


0

1

Есть 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 воспринимает их как свои команды. Как это исправить?


Много серверов?

Может проще настроить доступ по ключам без паролей и выполнять напрямую через ssh команды?

skyman ★★★
()

Ключи. Ключи. Ключи. Ключи. Ключи. Ключи. К л ю ч и.

Хоспаде, когда же за связку ssh + expect уже банить начнут.

entefeed ☆☆☆
()

Имя : sshpass

URL : http://sshpass.sourceforge.net/

Описание : Tool for non-interactively performing password authentication with so called «interactive keyboard password authentication» of SSH. Most users should use more secure public key authentication of SSH instead.

anonymous
()
Ответ на: комментарий от entefeed

создавать ключи, чтобы передать ключи...

danacn
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.