我们可以使用以下命令来测试 telnet VIA 端口;在以下示例中,我们测试端口 6667:
[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign host
由于在某些机器上我们不能使用 telnet(出于内部原因)检查端口的替代方法是什么,例如 telnet?
Netcat (
nc
) 是一种选择。-z
= 将 nc 设置为简单地扫描监听守护进程,而不实际向它们发送任何数据-v
= 启用详细模式如果使用 Bash Shell,那么您可以使用它的功能来检查端口是打开还是关闭:
请注意,如果服务器在 1 秒后没有响应超时,则之间的命令会
'
中断,因此不会打印任何内容。黄金标准无疑是
nmap
( nmap.org ),但它通常需要 root 才能获得“最佳结果”。但是,可以使用独立的二进制文件,并且可以以非特权用户的身份运行它,只是功能有所降低。例如,它不是隐身syn
扫描 (-sS
),而是回退到标准 TCP 连接扫描 (-sT
)。这在功能上等同于 netcat,但它具有良好的多主机、加速功能。一个例子:
“卷曲”可以让生活更轻松。无需root;curl 在所有 linux 系统上都可用
1)如果端口未打开,将显示以下输出
2)如果端口打开将显示以下输出
CtrlC退出
如果 Perl 是一个选项,您可以使用它的
IO::Socket
模块来测试与特定主机和端口的连接;下面的脚本将 TCP 硬编码为协议(这是 telnet 将使用的):来自封闭端口的示例输出:
来自开放端口的示例输出:
可以使用设备文件 /dev/tcp 和 /dev/udp 代替 telnet。示例:
echo 0 > /dev/tcp/103.64.35.86/6667
。然后使用 . 检查退出状态echo $?
。如果退出状态为 0,则端口打开。如果退出状态不为零,则端口关闭。要检查 udp 数据包,请使用echo 0 > /dev/udp/103.64.35.86/6667
.通过 Python 解释器(来自https://serverfault.com/a/500062/168647),我发现这种方式既快速又简单:
如果到目前为止没有引发错误,则连接正常。
openssl s_client -connect host:port
这是您可以使用的另一个命令。