我想以编程方式处理 nmap 输出的结果,但无法弄清楚如何获取输出并仅提取下面两个输出中显示的协议或端口表的详细信息。
我非常有信心我可以使用 awk 来处理表数据 - 但我不能从输出中提取它......可以使用哪些工具组合来做到这一点?
$ sudo nmap --open -sO 10.100.0.14
Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-27 19:15 AEDT
Warning: 10.100.0.14 giving up on port because retransmission cap hit (10).
Nmap scan report for teichos.mydomain.net (10.100.0.14)
Host is up (0.00030s latency).
Not shown: 250 filtered protocols, 1 closed protocol
PROTOCOL STATE SERVICE
1 open icmp
33 open|filtered dccp
80 open|filtered iso-ip
117 open|filtered iatp
136 open|filtered udplite
MAC Address: 6A:3A:ED:33:9E:00 (Unknown)
输出 2:
$ sudo nmap -sS 10.100.0.14 -p-
Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-27 19:30 AEDT
Nmap scan report for teichos.mydomain.net (10.100.0.14)
Host is up (0.00024s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE
22/tcp open ssh
9090/tcp open zeus-admin
MAC Address: 6A:3A:ED:33:9E:00 (Unknown)
我正在寻找的输出如下(标题不是必需的):
PROTOCOL STATE SERVICE
1 open icmp
33 open|filtered dccp
80 open|filtered iso-ip
117 open|filtered iatp
136 open|filtered udplite
和
PORT STATE SERVICE
22/tcp open ssh
9090/tcp open zeus-admin
使用您显示的特定输出,我们可以简单地选择所有以数字或大写字母开头的行
P
(对于标题):我创建了两个文本文件,
nmap1
并nmap2
使用您问题的两个输出进行测试,并获得:awk
如果您愿意,也可以这样做:如果给定选项,该
nmap
实用程序允许输出易于解析的 XML-oX
,这意味着您可以根据需要重新创建表,或从中提取所需的任何信息。下面的管道用于
xmlstarlet
从生成的 XML 文档中提取信息,并重新创建在普通nmap
输出中找到的表,并插入一个额外的列,其中包含给定“状态”的“原因”。的输出由
nmap
解析xmlstarlet
,它为列分隔符插入#
字符(我们不希望成为输出的一部分的任意字符),并column
用于创建最终的对齐表。示例输出:
同样,但只提取“过滤”的响应:
示例输出: