便宜のためにエイリアスを使用しましたが、うまく機能しましたssh
。autossh -M0
しかし、常にエラーで終了し、スクリプトに問題が発生します。
例えば
ssh me@myserver 'true' # equivalent to: autossh -M0 me@myserver 'true'
echo $? # 1
どうすれば解決できますか?
(スクリプトの回避策は/usr/bin/ssh
代わりにこれを使用してくださいssh
。しかし、可能であればこの問題を修正したいと思います。)
答え1
マニュアルページから:
「スタートゲート」の時間があります。最初のsshプロセスが開始後最初の数秒以内に失敗した場合、autosshは「開始ステートメントから出た」ことがないと仮定して終了します。初期認証失敗、接続などを処理するためのものです。この時間のデフォルト値は30秒で調整できます(下記のAUTOSS_GATETIME環境変数を参照)。
したがって、AUTOSH_GATETIME を 0 に設定すると問題が解決します。
AUTOSSH_GATETIME=0 ssh me@myserver 'true'
echo $? # 0
パスワードやパスフレーズを入力しない場合は、タグ-f
(autossh
別名に追加できます)を使用することもできます。
ssh -f me@myserver 'true'
echo $? # 0