Linux系统下检测端口开放状态
在 Linux 中有这样一个特殊文件 /dev/{tcp|udp}/${host}/${port},打开这个文件,就相当于发出了一个 socket 调用,建立了一个 socket 连接,读写这个文件就相当于在该 socket连接中传输数据。
该命令无需依赖 telnet、nc 或 curl 等工具,仅通过 Bash 即可测试端口连通性。
但该特性仅适用于 Bash,其他 Shell(如 Zsh、Dash)不支持
如下验证为22端口打开:
[root@VM-20-10-centos ~]# < /dev/tcp/127.0.0.1/22
[root@VM-20-10-centos ~]# echo $?
0
[root@VM-20-10-centos ~]#
如下验证为80端口未打开:
[root@VM-20-10-centos ~]# < /dev/tcp/127.0.0.1/80
-bash: connect: Connection refused
-bash: /dev/tcp/127.0.0.1/80: Connection refused
[root@VM-20-10-centos ~]# echo $?
1
[root@VM-20-10-centos ~]#
命令含义解释:
/dev/tcp/127.0.0.1/22中 "/dev/tcp/" 是一个特殊的文件系统路径,用于表示 TCP 网络连接。它允许用户通过文件操作的方式与网络服务进行交互,127.0.0.1 是本地主机的 IP 地址,表示本机。,22 是端口号,通常用于 SSH(Secure Shell)服务。因此,/dev/tcp/127.0.0.1/22 表示尝试连接到本机的 22 端口(即 SSH 服务)。
"<":这是一个输入重定向符号。它的作用是将文件的内容作为输入传递给某个命令。在这个上下文中,它尝试将 /dev/tcp/127.0.0.1/22 的内容(即从本机的 22 端口接收的数据)作为输入传递给某个命令。
"< /dev/tcp/127.0.0.1/22"命令的整体含义是:尝试连接到本机的 22 端口(SSH 服务),并将从该端口接收的数据作为输入传递给某个命令。

浙公网安备 33010602011771号