* Пожалуйста, не наваливайте и не говорите мне, чтобы использовать SSH-ключи. Если вам кажется, что я так делаю, делайте вид, что я пытаюсь подключиться к telnet. :-) *Использование Expect для администрирования компьютеров через SSH, но не выполняет все задачи
Я использую сценарий ожидания для запуска некоторых рутинных команд на множестве серверов под моим контролем через ssh. Скрипт должен запускать множество команд (например, svn update ~/folderx \ r ") на каждом из компьютеров. Мой текущий скрипт делает все, что я хочу, чтобы он делал ... иногда. Иногда он выходит из ssh-соединения, прежде чем он завершит один из последних нескольких команд.
Любые мысли о том, как я могу установить соединение до тех пор, пока все команды не будут завершены? Код успешно успешно работает, успешно запускает первые две команды или около того (ap-get update и один из SVN обновлений), а затем отсоединяется.
#!/usr/bin/expect -f
spawn ssh [email protected]
set timeout -1
expect "Are you sure you want to continue connecting" {send "yes\r"; exp_continue} "password:" {send "*******\r"; exp_continue
} "[email protected]" {send "sudo apt-get update\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder1\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder2\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder3\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo reboot\r"}
close
не забывайте возврат каретки после отправки «да» ' –