自動化の目的で、SSHPASS を使用して一時 IP 経由で Linux ベースのデバイスを構成しています。
sshpass -p $TARGET_password ssh -o StrictHostKeyChecking=no $TARGET_username@$TARGET_IP 'bash -s' < $configfile
一連のコマンドを含むスクリプトを送信しています。最後のコマンドは永続 IP を構成するものです。
スクリプトが IP を変更するとすぐに、一時 IP とのセッションが失われるため、スクリプトがハングします。
したがって、IP を変更するコマンドを送信し、戻りを待たずにすぐに切断することは可能ですか。
答え1
切断する前にアドレスが変更されます。たとえば、最後のコマンドを&
演算子を使用してバックグラウンドで実行します。次のようになります。
( (sleep 1; ip addr change ...) &)
SSHPASS が ACK を受信していないのはコマンドが成功したため (IP が変更されたため) なのか、コマンド パケットがサーバーに到達していないためなのかを判断する良い方法はありません。まったく(ネットワークの問題による) 前者の場合は切断する必要がありますが、後者の場合は未確認のパケットを再送信し続ける必要があります。