我希望有一个通用的shell脚本来检查两台主机之间的网络连接。
我使用host
和nslookup
命令编写了shell脚本以获取目标主机的更多详细信息,使用这些命令我无法确定当前主机是否可以与目标主机通信。
此外,我无法使用(限制)ping
命令,我想知道是否可以使用其他命令检查两台主机之间的网络连接
请建议
答案 0 :(得分:1)
指定目标主机确定源主机是否可以与目标主机通信
这太模糊而无用。要解决这个问题,你需要通过“沟通”来确定你的意思。主机可能能够发送ICMP但不能发送TCP。它可能能够发送TCP但不能发送ICMP。它可能能够将TCP发送到端口80,但不能发送到22.它可以将HTTP发送到端口80,但不能将SSH发送到端口80.您发送的数据包可能会返回错误,或者可能会以静默方式丢弃它们。端点可能会收到您的数据包,但不会处理它们。它可以处理它们但不回应你。有很多层次的“沟通”。
所以测试的最好的事情就是你真正想做的事情。因此,如果您想通过端口80与HTTP通信,最好的测试就是这样做。事实上,最好的测试是做你想做的事情,而不是事先检查。无论如何,你将不得不处理错误。仅仅因为你事先检查并不意味着你的实际尝试会成功。
但有时您只是想检查“连接”(对于某些“连接”值)以进行监控。在那种情况下,再次做你想要的事情。用于检查HTTP连接的最简单的shell工具是获取curl
的内容。如果你需要一些其他端口,那么一个非常好的通用解决方案是netcat
(通常称为nc
)。我喜欢:
nc -G 1 <host> <port> </dev/null
返回码为0表示已连接; 1表示失败。
对于更深奥的问题,您可以使用nmap
甚至hping
制作您想要的任何内容。
但大多数时候,你根本不应该检查。如果你做了检查,请检查你真正想做的事情。