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

相关内容