bash:通过tcp检查主机可用性

时间:2016-05-26 13:39:41

标签: linux bash tcp ping traceroute

我想在脚本[Linux:CentOS 7]中测试远程机器的可用性。虽然TCP包可以在途中被防火墙阻止,但ICMP包可能是可能的,并且不会被默认的防火墙设置阻止。因此,ping对我没有帮助

我尝试使用有限数量的跃点进行traceroute。但是我总是得到$?= 0的退出代码,即使在给定的跳数内没有达到目标,例如,

traceroute -T -p 1234 192.168.123.45 -w 1 -q 1 -m 5

所以,我正在寻找一种方法来获得CLI的正确错误'作为退出代码,如果无法通过TCP访问机器(对于给定的参数集)?

解决方案/复制

Cyrus指出Test from shell script if remote TCP port is open解决了我使用netcat的问题

当主机在tcp

上完全没有应答时,

从tcp伪设备读取可能会阻塞

   </dev/tcp/192.168.123.45/1234

因此,这仅适用于测试可访问主机上的端口。不幸的是,我发现无法从这样的伪设备读取可靠的超时(timeout -s4 2 </dev...不起作用)

在大多数设置中都可以使用netcat,我现在要进行像

这样的检查
nc -z -w 2 192.168.123.45 1234 && echo "host foo reachable on port bar" || echo "host foo not reachable on port bar"

两秒超时

0 个答案:

没有答案