システムで 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
ようなタイムアウトコマンドを紹介します。timeout
timelimit
timeout 10s sshpass ...
サービスの場合、ssh
パスワードの使用を避け、RSA証明書認証を使用してください。特定のsshpassコマンドについてはわかりませんが、通常呼び出されるバイナリが予防措置を講じていない場合は、コマンドラインps
で使用するときにパスワードを確認できます。