使用nmap命令查找开放端口的IP地址

4

我正在尝试用这个脚本从nmap中grep出开放端口的IP地址,但我无法正确地完成它。

我有类似于以下内容:

nmap 192.168.0.0/24 -sU -p 44555 | grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}"  >output.txt

但这将列出所有IP的开放和关闭状态。

nmap的示例输出:

Nmap scan report for 79-119-0-248.rdsnet.ro (79.119.0.248)
Host is up (0.033s latency).
PORT      STATE         SERVICE
27023/udp open|filtered unknown

Nmap scan report for 79-119-0-249.rdsnet.ro (79.119.0.249)
Host is up (0.032s latency).
PORT      STATE  SERVICE
27023/udp closed unknown

只有我想要的打开/过滤的那些

谢谢

你能提供nmap的输出吗? - Martin Delille
我还没有网络输出,所以尝试了另一个范围。 - user3297864
对不起,我想我误解了你的问题:在下面的情况中,你只想要第一个IP地址吗? - Martin Delille
不要忘记通过点击正确答案下面的勾选来接受答案。 - aidan
不要忘记通过点击正确答案下面的勾选来接受答案。 - MLSC
可能是从nmap扫描中仅输出开放端口的IP的重复问题。 - tripleee
3个回答

3

它可以与 egrep 协同工作:

nmap 192.168.0.0/24 -sU -p 44555 | grep -B3 open | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"  > output.txt

0
如果你只想获取“开放IP”,可以尝试以下代码(肯定有效):
nmap 192.168.0.0/24 -sU -p 44555 | grep '^44555.*open' -B3 | grep '^Nmap scan' | cut -d\( -f2 | cut -d\) -f1 > output.txt

0
使用 awk
nmap 192.168.0.0/24 -sU -p 44555|awk  '/(open|filtered)/{print $2}' RS="Nmap" FS="[)(]"

解释

  • RS="Nmap" - 设置工作变量为 Nmap 作为记录分隔符
  • FS="[)(]" - 将括号设置为字段分隔符
  • /(open|filtered)/{print $2} - 如果记录中包含 open 或者 filtered,则打印第二列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接