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”的文件,它从上面的nmap命令显示为'tcp open'。基本上给你一个文件:
server.domain.com (192.168.1.1)
因此,如果SSH实际上正在侦听端口22
,我只获取服务器名称和IP答案 0 :(得分:0)
基于样本输入和发布的样本输出,这样的事情可以起作用:
awk '/^Interesting/ {
domain = $(NF-1)
ip = substr($NF, 0, length($NF) - 1)
}
$2 == "open" {print domain, ip}' file
这样的工作原理如下: