我正在 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
在命令行中使用时可以看到密码。