use*_*421 155 ssh shell timeout
我正在远程主机上执行通过无密码SSH连接的脚本.我想设置一个超时,这样如果远程主机花了无限的时间来运行,我想从ssh会话中走出来继续我的sh脚本中的其他行.
有什么想法怎么做?
use*_*421 259
ssh -o ConnectTimeout=10 <hostName>
Run Code Online (Sandbox Code Playgroud)
其中10是以秒为单位的时间.
Dou*_*oug 103
使用-o ConnectTimeout
和-o BatchMode=yes -o StrictHostKeyChecking=no
.
ConnectTimeout使脚本不会挂起,BatchMode使其不会挂起Host未知,YES会添加到known_hosts,StrictHostKeyChecking会自动添加指纹.
****注意****"StrictHostKeyChecking"仅适用于您信任主机的内部网络.根据SSH客户端的版本,"您确定要添加指纹"会导致客户端无限期挂起(主要是在AIX上运行的旧版本).大多数现代版本都没有遇到这个问题.如果你必须处理多个主机的指纹,我建议使用某种配置管理工具维护known_hosts文件,如puppet/ansible/chef/salt/etc.
Lee*_*oYo 47
试试这个:
timeout 5 ssh user@ip
Run Code Online (Sandbox Code Playgroud)
timeout执行ssh命令(带args),如果ssh在5秒后没有返回,则发送SIGTERM.有关超时的更多详细信息,请阅读此文档:http: //man7.org/linux/man-pages/man1/timeout.1.html
或者您可以使用ssh的参数:
ssh -o ConnectTimeout=3 user@ip
Run Code Online (Sandbox Code Playgroud)
Pat*_*oni 16
你也可以用旗帜连接
-o ServerAliveInterval=<secs>所以SSH客户端每秒都会向服务器发送一个空包
<secs>
,只是为了保持连接的活跃性.在Linux中,这也可以在全局/etc/ssh/ssh_config
或每用户中设置~/.ssh/config
.