【问题标题】:ssh timeout in shell script workaroundshell 脚本中的 ssh 超时解决方法
【发布时间】:2015-10-08 14:37:03
【问题描述】:

我有一个循环遍历主机列表的脚本

/usr/local/bin/ssh -q -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -n ${host} "/usr/bin/uptime" > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo ${host}:FAILED
fi
fi
done

问题是当它遇到一个离线的主机时,它会挂起一段时间。

我在 i686-pc-linux-gnu 上运行 SSH Tectia Server 4.4.12 并且 ConnectTimeout 选项不可用。

有什么解决方法的想法吗?

谢谢

【问题讨论】:

  • 您的系统是否有一个名为timeout 的命令?很多人都这样做。
  • 嗨,马克我没有超时命令。库在那里,但命令与其他盒子上的不同。

标签: shell unix ssh timeout


【解决方案1】:

使用& 运算符在给定的时间长度内执行任务,将进程置于后台并终止其PID。:

/usr/local/bin/ssh -q -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -n ${host} "/usr/bin/uptime" & PID="$!"

# Allow 5 seconds to elapse before killing the command
sleep 5

kill "$PID"

【讨论】:

  • 感谢您的回复。这里的问题是,现在我正在测试 kill 的返回码与 ssh 的返回码。
猜你喜欢
  • 2018-03-30
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多