解析 Nmap 结果 BASH
Parse Nmap result BASH
我正在编写 BASH 脚本。从命令行我可以调用 nmap 并且我想提取特定端口的 ip。
$ nmap [ip]/24
Starting Nmap 6.47 ( http://nmap.org ) at 2015-02-26 01:59 PST
Nmap scan report for 192.168.56.1
Host is up (0.0012s latency).
Not shown: 500 closed ports, 499 filtered ports
PORT STATE SERVICE
3689/tcp open rendezvous
Nmap scan report for 192.168.56.101
Host is up (0.00042s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
我想要端口 21 的 IP 地址。在本例中为 192.168.56.101。我如何从 return 中提取它并将其保存到变量中?谢谢
遍历输出中的每一行,查看字符串 "Nmap scan report for <your ip address>"
,然后继续遍历输出的每一行,直到找到行 "21/tcp open ftp"
或 你发现一个空行或输出的结尾。
可以使用 Bash builtin commands read
和 while
来完成循环。
您可以使用 xml
输出并使用 xmllint
:
解析输出
nmap -p 21 -oX - "$IP"/24 | xmllint --xpath '//port[@portid="21"]/state[@state="open"]/../../../address/@addr' -
Nmap 的正常输出是人类可读的,但会随着版本的不同而变化。它不是设计为机器可解析的。 Nmap 有 2 种机器可解析的输出格式,它们更适合。首先,XML output(使用 -oX
选项)是最完整的格式,包含与正常输出一样多或更多的信息。您可以使用 xmlstarlet
或 xmllint
.
解析它
用于简单提取基本端口扫描信息的另一个流行选项是正式弃用的 Grepable output format (-oG
)。这种格式缺少许多 "more recent" 功能,如 NSE 脚本输出和跟踪路由信息,但它对于端口扫描数据是稳定的。以下是如何使用这种格式:
nmap $target -oG - | awk '/ 21\/open\/tcp/{print }'
我正在编写 BASH 脚本。从命令行我可以调用 nmap 并且我想提取特定端口的 ip。
$ nmap [ip]/24
Starting Nmap 6.47 ( http://nmap.org ) at 2015-02-26 01:59 PST
Nmap scan report for 192.168.56.1
Host is up (0.0012s latency).
Not shown: 500 closed ports, 499 filtered ports
PORT STATE SERVICE
3689/tcp open rendezvous
Nmap scan report for 192.168.56.101
Host is up (0.00042s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
我想要端口 21 的 IP 地址。在本例中为 192.168.56.101。我如何从 return 中提取它并将其保存到变量中?谢谢
遍历输出中的每一行,查看字符串 "Nmap scan report for <your ip address>"
,然后继续遍历输出的每一行,直到找到行 "21/tcp open ftp"
或 你发现一个空行或输出的结尾。
可以使用 Bash builtin commands read
和 while
来完成循环。
您可以使用 xml
输出并使用 xmllint
:
nmap -p 21 -oX - "$IP"/24 | xmllint --xpath '//port[@portid="21"]/state[@state="open"]/../../../address/@addr' -
Nmap 的正常输出是人类可读的,但会随着版本的不同而变化。它不是设计为机器可解析的。 Nmap 有 2 种机器可解析的输出格式,它们更适合。首先,XML output(使用 -oX
选项)是最完整的格式,包含与正常输出一样多或更多的信息。您可以使用 xmlstarlet
或 xmllint
.
用于简单提取基本端口扫描信息的另一个流行选项是正式弃用的 Grepable output format (-oG
)。这种格式缺少许多 "more recent" 功能,如 NSE 脚本输出和跟踪路由信息,但它对于端口扫描数据是稳定的。以下是如何使用这种格式:
nmap $target -oG - | awk '/ 21\/open\/tcp/{print }'