我需要一个工具来告诉我与主机的连接是否打开 - 没有数据要发送或接收。只要连接成功即可。
今天我使用 telnet。
$ telnet myhost myport
Trying 192.168.1.99...
Connected to myhost.
Escape character is '^]'.
^[^]
telnet> quit
Connection closed.
但我需要在那里手动输入。^]然后退出。
我需要检查多个主机,但这太多了。
有什么工具可以解决这一问题吗?
如果不行的话,我需要用 perl 写 15 行——这样也可以,但我更喜欢现有的工具。
Bash 具有本机重定向功能,可以检查开放端口
或者你可以使用 nc(1):
您还可以通过将 telnet 传输到 grep 之类的程序来以编程方式使用 telnet:
使用此脚本,您可以检查主机是否在给定端口上响应:
bash 的内置 /dev/tcp。
您可以使用 IP 地址或域(主机名)。
脚本 1 单端口
脚本 2 端口范围
脚本 3 端口 1-65535
现有的可以执行此操作的工具是
nmap
端口扫描器:-sT
表示 TCP 端口扫描 - 它将 SYN、ACK、SYN/ACK 然后 RST 连接。-p 22
表示将测试端口 22。它可以扫描单个 IP、IP 范围(如上所示)、IP CIDR 块或这三者的任意组合。
它还支持 XML 和 grep 输出,如下所示:
另一个现有的好工具是fping
fping 是一个类似于 ping 的程序,它使用互联网控制消息协议回显请求来确定目标主机是否响应。
fping 与 ping 的不同之处在于,您可以在命令行上指定任意数量的目标,或者指定包含要 ping 的目标列表的文件,或者在命令行上从子网生成范围(我通常使用的最常见形式)。
例如:
fping 可从大多数发行版的标准存储库安装。