bashスクリプトでSSHセッションが閉じられませんでした。

bashスクリプトでSSHセッションが閉じられませんでした。

システムで ssh を実行し、while ループで再起動しますが、ssh セッションが閉じられず、最初の再起動後にスクリプトがハングします。電源を切るさまざまな方法を試してみましたが、どのようなアイデアがありますか?エコ「テスト」は決して得られません。

#!/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

リセット.sh

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

答え1

再起動を要求すると、リモートセッションが失われ、リモートシステムからの応答を待ってシステムが一時停止することがあります。

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

timeout 10s sshpass ...

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

関連情報