如何让 Netcat 进入 return 个未使用的端口
How to get Netcat to return unused ports
我试过这个命令来尝试找到未使用的端口。我想要它做的是 运行 一系列端口上的 netcat,找到不是 运行ning 服务的端口,grep 这些输出行中的第一行,然后使用 sed 输出仅限端口号。
nc -z <my url> 5000-5010 | grep -m 1 succeeded | sed 's/[^0-9]//g'
但是当我尝试使用返回的端口启动服务时,我收到一条消息说该端口当前正在使用中。
我发现 netcat 成功意味着服务在端口上 运行ning,但是当我尝试这样做时
nc -zv <my url> 5000-5010 | grep -m 1 failed | sed 's/[^0-9]//g'
我什么也没得到,尽管大多数输出行都包含 failed 这个词。
浏览手册页显示 netcat -z 仅 returns 输出成功结果,但为什么我的终端上出现一行接一行的失败连接 window 仍然超出我的理解范围。
如何使用 netcat 查看连接失败的第一个端口?
nc -v
命令将 failed/succeeded 消息写入标准错误,而不是标准输出。您可以使用 2>&1
.
将 stderr 重定向到 stdout
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed
获取失败的行。
见http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/
顺便说一下,我建议你使用 awk 从输出行中获取端口号:
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed | awk '{print }'
在输出行的第 6 列打印值。
要获取 linux 系统上已关闭(未使用)的端口列表,您可以使用:
实时输出:
#!/bin/bash
remoteHost=whosebug.com
for i in {80..100}
do
nc -v -z -w 1 $remoteHost $i &> /dev/null && echo "Port $i Open" || echo "Port $i Closed"
done
如果需要,您可以将当前设置为 1 秒 (-w 1
) 的超时值更改为更高的值。
输出:
Port 80 Open
Port 81 Closed
Port 82 Closed
Port 83 Closed
Port 84 Closed
Port 85 Closed
etc..
nc
个参数:
-v
让 nc 给出更详细的输出。
-z
指定 nc 应该只扫描侦听守护进程,而不向它们发送任何数据。将此选项与 -l 选项一起使用是错误的。
-w
超时
如果连接和 stdin 空闲时间超过超时秒数,则连接将静默关闭。 -w 标志对 -l 选项没有影响,即 nc 将永远侦听连接,有或没有 -w 标志。默认是没有超时。
资源
我试过这个命令来尝试找到未使用的端口。我想要它做的是 运行 一系列端口上的 netcat,找到不是 运行ning 服务的端口,grep 这些输出行中的第一行,然后使用 sed 输出仅限端口号。
nc -z <my url> 5000-5010 | grep -m 1 succeeded | sed 's/[^0-9]//g'
但是当我尝试使用返回的端口启动服务时,我收到一条消息说该端口当前正在使用中。
我发现 netcat 成功意味着服务在端口上 运行ning,但是当我尝试这样做时
nc -zv <my url> 5000-5010 | grep -m 1 failed | sed 's/[^0-9]//g'
我什么也没得到,尽管大多数输出行都包含 failed 这个词。
浏览手册页显示 netcat -z 仅 returns 输出成功结果,但为什么我的终端上出现一行接一行的失败连接 window 仍然超出我的理解范围。
如何使用 netcat 查看连接失败的第一个端口?
nc -v
命令将 failed/succeeded 消息写入标准错误,而不是标准输出。您可以使用 2>&1
.
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed
获取失败的行。
见http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/
顺便说一下,我建议你使用 awk 从输出行中获取端口号:
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed | awk '{print }'
在输出行的第 6 列打印值。
要获取 linux 系统上已关闭(未使用)的端口列表,您可以使用:
实时输出:
#!/bin/bash
remoteHost=whosebug.com
for i in {80..100}
do
nc -v -z -w 1 $remoteHost $i &> /dev/null && echo "Port $i Open" || echo "Port $i Closed"
done
如果需要,您可以将当前设置为 1 秒 (-w 1
) 的超时值更改为更高的值。
输出:
Port 80 Open
Port 81 Closed
Port 82 Closed
Port 83 Closed
Port 84 Closed
Port 85 Closed
etc..
nc
个参数:
-v
让 nc 给出更详细的输出。
-z
指定 nc 应该只扫描侦听守护进程,而不向它们发送任何数据。将此选项与 -l 选项一起使用是错误的。
-w
超时
如果连接和 stdin 空闲时间超过超时秒数,则连接将静默关闭。 -w 标志对 -l 选项没有影响,即 nc 将永远侦听连接,有或没有 -w 标志。默认是没有超时。
资源