Awk 如何筛选多个字符串的nmap结果并输出到文件?
2我想使用nmap获取网络上linux服务器的主机列表,但我不确定如何根据多个字符串筛选结果。所以我用的是:Awk 如何筛选多个字符串的nmap结果并输出到文件?,awk,nmap,Awk,Nmap,2我想使用nmap获取网络上linux服务器的主机列表,但我不确定如何根据多个字符串筛选结果。所以我用的是: nmap -sT -R --dns-servers 192.168.1.1,192.168.1.2 -p 22 192.168.1.0/24 这给了我结果,但当然它也显示了每个封闭端口的IP。我如何将逻辑与awk结合使用,以便如果它找到一个具有主机名的IP,并且发现下面的行具有“tcp打开”,它将把这两行输出到一个输出文件 从nmap使用的典型输入如下所示: Interesting p
nmap -sT -R --dns-servers 192.168.1.1,192.168.1.2 -p 22 192.168.1.0/24
这给了我结果,但当然它也显示了每个封闭端口的IP。我如何将逻辑与awk结合使用,以便如果它找到一个具有主机名的IP,并且发现下面的行具有“tcp打开”,它将把这两行输出到一个输出文件
从nmap使用的典型输入如下所示:
Interesting ports on server.domain.com (192.168.1.1):
PORT STATE SERVICE
22/tcp open ssh
Interesting ports on server2.domain.com (192.168.1.2):
PORT STATE SERVICE
22/tcp closed ssh
但这将适用于扫描的每一个IP,因此我试图找到一种方法,使文件仅包含主机名和IP“if”,它在上面的nmap命令中显示为“tcp open”。基本上为您提供了一个包含以下内容的文件:
server.domain.com (192.168.1.1)
因此,如果SSH根据发布的示例输入和示例输出在端口22上侦听,那么我只能获取服务器名称和IP,类似的方法可能会起作用:
awk '/^Interesting/ {
domain = $(NF-1)
ip = substr($NF, 0, length($NF) - 1)
}
$2 == "open" {print domain, ip}' file
其工作原理如下:
- 如果一行以“有趣”开头,则倒数第二个字段存储为域,最后一个字段(减去尾随冒号)存储为ip李>
- 如果它找到第二个令牌为“打开”的行,那么它将打印先前找到的域和ip