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