Warm tip: This article is reproduced from serverfault.com, please click

awk-清除Nmap输出[IP:Port]

(awk - Clean Nmap output [IP:Port])

发布于 2020-12-03 18:10:38

我想以以下格式获取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
Questioner
mikelakers
Viewed
0
Raman Sailopal 2020-12-04 03:13:13
nmap ... | awk '/^Host/ && /Ports/ { for (i=1;i<=NF;i++) { if (match($i,/open/)) { split($i,map,"/"); printf "%s:%s\n",$2,map[1] } } }'

在输出中搜索以Host开头并且还包含Port的行。循环浏览每个以空格分隔的字段,并使用match函数检查该字段中的打开状态。如果存在匹配项,请使用split函数将字段拆分为一个数组映射,并使用数组的第一个索引作为端口。打印第二个定界字段以及端口。