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在命令列中使用時可以看到密碼。

相關內容