複数のデバイスの名前をデフォルト値に変更するlinux / Fedoraサーバーでシェルスクリプトを作成/実行しています。最初のデバイスで完了すると、接続は閉じられないため停止します。スクリプトのデフォルト値はipsで、ネットワークサービスを再起動します。デバイスで実行するときに接続をどのように閉じますか?
リセットするスクリプトは次のとおりです。
/bin/ssh $CHECKME -o ConnectTimeout=5 "/usr/local/bin/NameTerm.sh reset"
ここCHECKME
から接続機器のIPを取得すると正常に動作します。NameTerm.sh
IPアドレスを再び0.0.0.0に設定した後にサービスネットワークを再起動するシェルスクリプト。スクリプトを変更できません。
答え1
SSHサーバーが消えても、クライアント側ではTCP接続が存在し続け、SSHクライアントはデフォルトでこれを待ちます。
このConnectTimeout
オプションは、次の状況で使用される名前によって異なります。つながる、接続がすでに有効になっているわけではありません。
ServerAliveInterval
代わりに、以下を使用したい場合がありますServerAliveCountMax
。
ServerAliveCountMax
ssh(1)がサーバーからメッセージを再受信できない場合に送信できるサーバーアクティブメッセージの数(以下を参照)を設定します。サーバー活動メッセージの送信中にこのしきい値に達すると、sshはサーバーとの接続を切断してセッションを終了します。
ServerAliveInterval
サーバーからデータが受信されない場合、ssh(1)は暗号化されたチャネルを介してメッセージを送信してサーバーに応答を要求するタイムアウト間隔(秒単位)を設定します。デフォルトは 0 で、これはこれらのメッセージがサーバーに送信されないことを意味します。
これは約3x5 = 15秒を待ちますが、ServerAliveCountMax
デフォルトは3ですServerAliveInterval
。
ServerAliveCountMax 3
ServerAliveInterval 5