Что значит сочетать взаимодействие с доходностью в ожидании? - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу использовать оболочку и ожидать входа на сервер только одной командой.Но когда взаимодействие и возврат используются в одном выражении, я не понимаю, что они означают. Кроме того, «Пароль» будет появляться только тогда, когда мультиплексирование ссылок SSH отключено, поэтому я надеюсь, что когда «Пароль» не появится, он будетне отправлять "mypassord".

  1. Так как же написать сценарии для единого решения этих двух ситуаций?
  2. Когда были установлены мультиплексированные ссылки SSH, мой скрипт застрял в "ожидаемо" Пароль"". Как с этим бороться?
  3. Кроме того, я хотел бы спросить, что означает параметр -o после взаимодействия?И что означает использование взаимодействия и возврата вместе?
  4. В чем разница между «send -» и «send»?

Я включил мастер-соединение SSH.Прежде чем войти в систему на сервере, мне нужно сначала ввести пароль, а затем ввести номер, чтобы указать, на какой машине я вхожу в систему.Но когда SSH-мультиплексные соединения установлены, возможность ввода паролей становится избыточной.

#!/usr/bin/expect

# ssh command
set cmd [lindex $argv 0]
set relay_num [lindex $argv 1]

set timeout -1

# run ssh command
spawn bash -c "$cmd"

expect "Password*"
send "mypassord\r"

interact -o -nobuffer -re "Option" return
send -- "$relay_num\r"

interact

1 Ответ

0 голосов
/ 30 сентября 2019

В сочетании с переключателем -o эта строка просматривает вывод команды для регулярного выражения "Option".return приведет к завершению команды interact, а сценарий переходит к команде send (это объясняется на странице руководства).

Я думаю, было бы более понятно использовать expect "Option" вместо.

...