監視フラグ付きで autossh を使用しています。autossh は、テスト パケットを送信するたびに標準出力に出力します。
予期した状態で autossh を使用すると、テキスト パケット メッセージが出力されません。それらが送信されているかどうかはわかりませんが、これはssh接続を維持するために重要です。
「期待」がautosshの動作に影響するかどうかわかりますか?autossh が正しく機能するかどうかを確認するにはどうすればよいですか?
期待コード:
#!/usr/bin/expect
set timeout 50
spawn autossh -M 11111 -N -R 4848:localhost:80 user@192.168.1.100
set keepRunning 1
while {$keepRunning} {
expect \
{
"(yes/no)" { send "yes\r" }
"Password:*" { send "1234\r" ; set keepRunning 0 }
"ssh exited prematurely with" { exit 7 }
"remote port forwarding failed*" { exit 8 }
}
}
expect \
{
"remote port forwarding failed*" { exit 9 }
"Password:*" { exit 5 }
}
wait
予期せずに表示される定期的な出力は次のとおりです。
autossh[2882]: checking for grace period, tries = 0
autossh[2882]: starting ssh (count 1)
autossh[2883]: execing /pfrm2.0/bin/ssh
autossh[2882]: ssh child pid is 2883
autossh[2882]: check on child 2883
autossh[2882]: set alarm for 50 secs
Password: autossh[2882]: connection ok
**autossh[2882]: check on child 2883
autossh[2882]: set alarm for 60 secs
autossh[2882]: connection ok
autossh[2882]: check on child 2883
autossh[2882]: set alarm for 60 secs**
最後の 5 行は、autossh によって送信されたテスト パケットです。その行は、autossh を bash から直接実行した場合にのみ出力されます。「expect」を使用して実行すると、これらの行は出力されず、autossh が送信するかどうかわかりません。
ありがとう。