我想找到一种方法,为发现至少有一个开放端口的每个IP地址打印,打印该IP地址,然后列出由逗号分隔的开放端口列表。端口和IP地址应使用制表符分隔符分隔。
我可以通过丑陋的方式来做到这一点,方法是仅对IP地址进行grep,将其写入文件,然后使用IP地址结果文件作为输入文件再次对nmap文件进行grep,然后使用cut和sed修剪打开的端口,将其写入文件,然后加入两个文件。这是一个丑陋的过程,在边缘情况下无法可靠地工作。
有没有一种简单的方法可以用awk做到这一点?我想我需要在awk中有一个函数来查找所有打开的端口并返回它们,以便可以将它们与IP地址一起打印,但是我还没有找到如何做的方法。
源数据示例:
Host: 10.0.0.101 ()Ports: 21/closed/tcp//ftp///, 22/closed/tcp//ssh///, 23/closed/tcp//telnet///, 25/closed/tcp//smtp///, 53/closed/tcp//domain///, 110/closed/tcp//pop3///, 139/open/tcp//netbios-ssn///, 143/closed/tcp//imap///, 445/open/tcp//microsoft-ds///, 3389/closed/tcp//ms-wbt-server///
预期输出数据:
10.0.0.101 139,445
我不知道标题编辑会增加清晰度,因为可抓握的nmap输出是唯一适合此类文本处理的输出文件。也许可以在问题中提到这一点。
—
杰森·基德
“这种类型的文本处理”称为“解析”,这就是为什么我在标题中添加单词“ Parse”以使其更易于搜索。
—
Alex Stragies