λ Jonas Gorauskas Asked: 2016-07-10 11:36:30 +0800 CST2016-07-10 11:36:30 +0800 CST 2016-07-10 11:36:30 +0800 CST 检查远程主机/端口是否打开 - 无法使用 GNU Netcat 或 NMap - RHEL 7 772 在工作中,基础架构团队正在推出安装了 RHEL7 作为基本操作系统的新 VM。此特定图像随nmap-ncatNetcat 版本一起提供,并且没有安装 NMap。我们被禁止在机器上安装任何东西。 以前,我们使用 GNU Netcat,它可以-z选择扫描远程主机/端口以检查它是否打开。像这样的东西: nc -z -v -w 3 remote.host.name 1234 如何在无法安装的系统上使用ncat没有选项的新版本进行相同的检查?-znmap netcat rhel7 nmap 3 个回答 Voted Best Answer HBruijn 2016-07-10T12:00:31+08:002016-07-10T12:00:31+08:00 Bash 允许您通过重定向到特殊文件来连接到 TCP 和/或 UDP 端口: /dev/tcp/host/port如果 host 是一个有效的主机名或 Internet 地址,并且 port 是一个整数端口号或服务名,Bash 会尝试打开相应的 TCP 套接字。 /dev/udp/host/port如果 host 是一个有效的主机名或 Internet 地址,并且 port 是一个整数端口号或服务名,Bash 会尝试打开相应的 UDP 套接字。 打开或创建文件失败会导致重定向失败。 因此,要测试您是否可以连接到 www.example.com 上的端口 80,以下应该可以工作: echo -n > /dev/tcp/www.example.com/80 如果端口被阻止,您将收到“连接被拒绝”消息或超时。 bonsaiviking 2016-07-12T08:39:44+08:002016-07-12T08:39:44+08:00 虽然 Ncat 还不支持-z,但您可以通过 shell 重定向获得相同的行为: $ ncat google.com 80 </dev/null >/dev/null && echo "yes" yes $ ncat google.com 81 </dev/null >/dev/null && echo "yes" Ncat: Connection timed out. $ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes" Ncat: Connection refused. 可以使用该-w选项调整连接超时。 编辑:Ncat 7.25BETA2引入了-z与 GNU netcat 一样工作的选项,但仅限于单个端口。如果你需要扫描端口范围,你应该使用 Nmap。 AGS 2019-04-26T07:09:38+08:002019-04-26T07:09:38+08:00 netcat、telnet 和 nmap 都不需要。Bash 更简单、便携且更高效。 开支票 (>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 打开/关闭检查 (>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed" 端口范围检查 for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
Bash 允许您通过重定向到特殊文件来连接到 TCP 和/或 UDP 端口:
因此,要测试您是否可以连接到 www.example.com 上的端口 80,以下应该可以工作:
如果端口被阻止,您将收到“连接被拒绝”消息或超时。
虽然 Ncat 还不支持
-z
,但您可以通过 shell 重定向获得相同的行为:可以使用该
-w
选项调整连接超时。编辑:Ncat 7.25BETA2引入了
-z
与 GNU netcat 一样工作的选项,但仅限于单个端口。如果你需要扫描端口范围,你应该使用 Nmap。netcat、telnet 和 nmap 都不需要。Bash 更简单、便携且更高效。
开支票
打开/关闭检查
端口范围检查