Linux 如何让Netcat返回未使用的端口
我尝试使用此命令来查找未使用的端口。我希望它在一系列端口上运行netcat,找到那些没有运行服务的端口,grep这些输出行中的第一行,然后使用sed只输出端口号Linux 如何让Netcat返回未使用的端口,linux,sed,netcat,Linux,Sed,Netcat,我尝试使用此命令来查找未使用的端口。我希望它在一系列端口上运行netcat,找到那些没有运行服务的端口,grep这些输出行中的第一行,然后使用sed只输出端口号 nc -z <my url> 5000-5010 | grep -m 1 succeeded | sed 's/[^0-9]//g' nc-z5000-5010 | grep-m1成功| sed的/[^0-9]//g' 但是,当我尝试使用返回的端口启动服务时,会收到一条消息,说明该端口当前正在使用 我发现netcat的成
nc -z <my url> 5000-5010 | grep -m 1 succeeded | sed 's/[^0-9]//g'
nc-z5000-5010 | grep-m1成功| sed的/[^0-9]//g'
但是,当我尝试使用返回的端口启动服务时,会收到一条消息,说明该端口当前正在使用
我发现netcat的成功意味着一个服务正在端口上运行,但是当我尝试这样做时
nc -zv <my url> 5000-5010 | grep -m 1 failed | sed 's/[^0-9]//g'
nc-zv 5000-5010 | grep-m 1失败| sed的/[^0-9]//g'
我什么也得不到,即使大多数输出行都包含单词failed
浏览手册页发现netcat-z只返回成功结果的输出,尽管我仍然不明白为什么一行接一行的失败连接出现在我的终端窗口上
如何使用netcat查看连接失败的第一个端口?nc-v命令将失败/成功消息写入标准错误,而不是标准输出。您可以使用
2>&1
将stderr重定向到stdout
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed
nc-zv 5000-50102>&1 | grep-m 1失败
获取失败的线路
看
顺便说一下,我建议您使用awk从输出行获取端口号:
nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed | awk '{print $6}'
nc-zv5000-50102>&1 | grep-m1失败| awk'{print$6}'
打印输出行第6列中的值。要获取linux系统上已关闭(未使用)端口的列表,可以使用:
实时输出:
#!/bin/bash
remoteHost=stackoverflow.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标志。默认值为无超时
资源 您可能需要调查,这是一种网络扫描工具,可能会使此任务更容易。