bash スクリプトで ssh セッションが閉じない

bash スクリプトで ssh セッションが閉じない

システムに ssh して while ループで再起動していますが、ssh セッションが閉じないため、最初の再起動後にスクリプトがハングしたままになっています。さまざまな方法で閉じようとしましたが、何かいい方法はありませんか? echo "test" までたどり着けません。

#!/bin/bash
while true
do
echo "Executing SSH session to 192.168.1.1..."
sshpass -p "pass" ssh -o StrictHostKeyChecking=no [email protected] << ! 
./reset.sh 
! 
echo "test"
sleep 20
done

リセット

#! /bin/sh
if [  -e /dev/ttyUSB2 ]  && [  -e /dev/ttyUSB5 ]; then {
reboot -f
}
fi

答え1

再起動を要求しているためにリモート セッションが失われ、リモート システムが応答するのを待つ間システムがしばらくハングする可能性があります。

その前に、次のようなsshpassタイムアウト コマンドを紹介します。timeouttimelimit

timeout 10s sshpass ...

サービスに関してはssh、パスワードの使用を避け、代わりに RSA 証明書認証を使用するようにしてください。特定の sshpass コマンドについてはよくわかりませんが、呼び出されるバイナリが予防措置を講じていない場合、psコマンド ラインで使用するとパスワードが見られることがよくあります。

関連情報