如何过滤多个字符串的 nmap 结果并输出到文件?
how can I filter nmap results for multiple strings and output to file?
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 open' 它会将这两行吐到输出文件中?
从 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" 的文件,它显示为 'tcp open' 来自上面的 nmap 命令。基本上给你一个文件:
server.domain.com (192.168.1.1)
如果 SSH 实际上在端口 22 上侦听,我只会获得服务器名称和 IP
根据示例输入和发布的示例输出,类似这样的方法可行:
awk '/^Interesting/ {
domain = $(NF-1)
ip = substr($NF, 0, length($NF) - 1)
}
== "open" {print domain, ip}' file
这是这样工作的:
- 如果一行以"Interesting"开头,则倒数第二个字段存储为域,最后一个字段(减去尾随冒号)存储为ip。
- 如果找到第二个标记为 "open" 的行,则会打印之前找到的域和 ip。
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 open' 它会将这两行吐到输出文件中?
从 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" 的文件,它显示为 'tcp open' 来自上面的 nmap 命令。基本上给你一个文件:
server.domain.com (192.168.1.1)
如果 SSH 实际上在端口 22 上侦听,我只会获得服务器名称和 IP
根据示例输入和发布的示例输出,类似这样的方法可行:
awk '/^Interesting/ {
domain = $(NF-1)
ip = substr($NF, 0, length($NF) - 1)
}
== "open" {print domain, ip}' file
这是这样工作的:
- 如果一行以"Interesting"开头,则倒数第二个字段存储为域,最后一个字段(减去尾随冒号)存储为ip。
- 如果找到第二个标记为 "open" 的行,则会打印之前找到的域和 ip。