ожидайте команду - Unix - PullRequest
       27

ожидайте команду - Unix

1 голос
/ 04 августа 2010

Я использую функцию «ожидается» для автоматизации аутентификации по паролю SSH.Когда я запускаю сценарий в SunOS, я обнаруживаю, что порожденный процесс ssh завершается после завершения приведенного ниже сценарияЭто не так в Linux.Как мы этого избежать?Должны ли мы как-то игнорировать сигнал SIGCHLD?В любом случае, можно ли с помощью этого сценария определить, успешен ли порожденный процесс, и сообщить об ошибке, если таковая имеется?

Ответы [ 2 ]

1 голос
/ 04 августа 2010

Вместо того, чтобы помещать команду ssh в фоновом режиме, вы можете поместить ожидаемый скрипт в фон:

#!/usr/local/bin/expect -f

if {[fork] != 0} exit
disconnect

set password blah-blah
spawn ssh -NL 8002:localhost:22 test@testdomain.com
expect {
    EOF {exit 1}
    "assword:" {}
}
send -- "$password\n"
send -- "\n"
expect EOF
wait

У меня работает в Linux.По крайней мере, на этапе настройки, остановить его сложнее.Мне пришлось kill -9, чтобы остановить ожидаемый сценарий.Что, вероятно, также требует уничтожения процесса ssh.

1 голос
/ 04 августа 2010

Если вы используете ssh-ключи, вам не нужно кодировать пароли в сценариях оболочки.

Вы можете даже зашифровать ключ с помощью ключевой фразы и использовать ssh-agent для управления ключом за вас -- вы открываете свой ключ утром, запускаете туннель, а затем забываете свой ключ, когда идете на ланч, открываете свой ключ днем, и снова забываете его, когда возвращаетесь домой ночью.Нет волшебного шлюза на диске для удаленных машин.

...