Похоже, вы пытаетесь отправить команды в удаленную систему в документе "здесь":
spawn sudo ssh -t -t -v $user@$to << EOF
ls
EOF
Вместо этого вы должны использовать exp_send для отправки команды ls непосредственно перед «взаимодействием», то есть удалите документ «здесь»:
spawn sudo ssh -t -t -v $user@$to
И поместите здесь команду ls в конце:
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "$pass\r"
}
}
exp_send "ls\r"
interact
РЕДАКТИРОВАТЬ:
Ах, я неправильно понял. Если вы просто хотите выполнить команду, то вам нужно указать другому концу закрыть соединение:
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "$pass\r"
}
}
exp_send "ls\r"
exp_send "exit\r"
expect {
eof {puts "Connection closed"}
timeout {puts "Connection timed out"}
}