Shell 脚本终止与服务器的连接但保持连接打开

Shell 脚本终止与服务器的连接但保持连接打开

我正在从 linux/Fedora 服务器创建/运行一个 shell 脚本,该脚本将多个设备重命名为默认值。一旦它完成第一个设备,它就会挂起,因为连接没有关闭。该脚本默认 ips 并重新启动网络服务。在设备上运行时如何关闭连接?

这是重置它们的脚本。

/bin/ssh $CHECKME -o ConnectTimeout=5 "/usr/local/bin/NameTerm.sh reset"

CHECKME是我获取所连接设备的 ip 并运行良好的地方。这NameTerm.sh是一个 shell 脚本,它将 IP 地址设置回 0.0.0.0,然后重新启动服务网络。我无法改变剧本。

答案1

如果 SSH 服务器消失,从客户端的角度来看,TCP 连接仍然存在,并且 SSH 客户端默认会等待它。

ConnectTimeout选项没有区别,根据名称,它在以下情况下使用连接,而不是当连接已处于活动状态时。

相反,您可能想使用ServerAliveIntervaland ServerAliveCountMax

ServerAliveCountMax

设置服务器活动消息的数量(见下文),可以在 ssh(1) 接收不到服务器返回的任何消息的情况下发送该消息。如果在发送服务器活动消息时达到此阈值,ssh 将与服务器断开连接,从而终止会话。

ServerAliveInterval     

设置超时间隔(以秒为单位),在此之后如果没有从服务器接收到数据,ssh(1) 将通过加密通道发送消息以请求服务器响应。默认为0,表示这些消息不会发送到服务器。

这将等待大约 3x5 = 15 秒,但ServerAliveCountMax默认设置为 3,因此您只需设置ServerAliveInterval.

ServerAliveCountMax 3
ServerAliveInterval 5

相关内容