【发布时间】:2013-12-06 18:06:23
【问题描述】:
我使用 SSH 在for 循环中的多台远程机器上运行一些命令。它对 IP 地址列表执行相同的命令。有些 IP 地址可能无法访问,所以我使用了ConnectTimeout 选项。
但是,我的脚本没有按照我想要的方式运行。实际上,它卡在第一个无法访问的 IP 上,而不是放弃并尝试我列表中的下一个 IP 地址。
这是我脚本的相关部分:
for ip in ${IP} ; do
ssh -o BatchMode=yes \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=10 \
-l ${USERNAME} \
${SCRIPT_HOST} \
"${COMMAND} -i $ip || echo timeout" \
>> ./myscript.out
done
对于可访问的 IP,它工作正常,但如果特定 IP 关闭,它会等待一段时间(超过 10 秒,可能是 35-40 秒)并向我的终端显示错误消息:
ERROR connecting : Connection timed out
所以我想知道我没有正确使用哪个选项。
【问题讨论】:
-
不能在后台运行吗??并通过
<your command> 2>/dev/null忽略错误 -
您是否尝试过在调试模式(即详细模式)下执行 ssh?
标签: shell for-loop ssh timeout