【发布时间】:2019-01-22 17:32:10
【问题描述】:
我正在做的一个熟悉自己的项目是解析 nmap 结果。
(我知道-oG 选项,但我正在使用grep、awk、for 和while 循环)。
以下是我要解析的内容:
Starting Nmap 7.60 ( https://nmap.org ) at 2017-12-05 11:26 EST
Nmap scan report for house.router.nick (192.168.1.1)
Host is up (0.00059s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
427/tcp open svrloc
1900/tcp open upnp
MAC Address: 50:C7:BF:A8:CF:C8 (Tp-link Technologies)
Nmap scan report for 192.168.1.2
Host is up (0.00034s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 48:F8:B3:C9:AE:BB (Cisco-Linksys)
我想得到的是这样的:
22/ssh
====
192.168.1.1
192.168.1.2
http
===
192.168.1.2
到目前为止,我有这个:
grep -E "tcp.*open" nmap.txt | awk '{ print $3 }' | sort | uniq
对于我的生活,我无法弄清楚如何将它变成一个循环并从上面获得所需的输出。
能否请您帮助我了解并解释您为什么会找到您所做的解决方案?如果我无法理解其背后的逻辑,那么获得潜在的解决方案毫无意义。
【问题讨论】:
-
您当前收到的输出是什么?
-
目前,这是我得到的域 http microsoft-ds netbios-ssn ssh svrloc
-
您将不得不更全面/清楚地描述您的需求,因为有多种方法可以从该输入中获取输出,但我怀疑其中只有一种是您真正想要做的。
-
为什么不显示其他
tcp.*open匹配项,在哪里只过滤 ssh 或 22? -
edit 您的问题包含所有相关信息,请勿将其分散到可能遗漏的 cmets 中。一些不清楚的事情,例如 - 为什么每个服务类型只使用 ssh 而不是单独的列表?如果一个IP只有http怎么办?为什么只有端口 22 而不是每个端口和服务的列表。等等等等……
标签: bash parsing awk grep nmap