清理 Nmap 输出 [IP:Port]

Clean Nmap output [IP:Port]

我想获得以下格式的 Nmap 输出(如果可能,使用一行命令):

2001:4860:4860::8888:53
2001:4860:4860::8888:443
2001:4860:4860::8888:853
2001:4860:4860::8844:53
2001:4860:4860::8844:443

这是原始输出:

Nmap 7.80 scan initiated Thu Dec  3 17:04:38 2020 as: nmap -6 -p- -iL out.txt
Host: 2001:4860:4860::8888 (dns.google) Status: Up
Host: 2001:4860:4860::8888 (dns.google) Ports: 53/open/tcp//domain///, 443/open/tcp//https///, 853/open/tcp//domain-s///
Host: 2001:4860:4860::8844 (dns.google) Status: Up
Host: 2001:4860:4860::8844 (dns.google) Ports: 53/open/tcp//domain///, 443/open/tcp//https///
Nmap done at Thu Dec  3 17:05:31 2020 -- 2 IP addresses (2 hosts up) scanned in 52.90 seconds
nmap ... | awk '/^Host/ && /Ports/ { for (i=1;i<=NF;i++) { if (match($i,/open/)) { split($i,map,"/"); printf "%s:%s\n",,map[1] } } }'

在输出中搜索以 Host 开头且还包含 Port 的行。遍历每个 space 分隔字段并使用匹配函数检查字段中的打开。如果匹配,则使用 split 函数将字段拆分为数组映射,并使用数组的第一个索引作为端口。打印第二个分隔字段和端口。