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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.