如何使用 nmap ping 域并获取域而不是 IP 的输出?

如何使用 nmap ping 域并获取域而不是 IP 的输出?

我正在尝试使用 nmap 来 ping 域列表,我正在使用:

nmap -sP -iL /path/to/file/domains

ping 工作正常,但在 ping 成功的域输出中,我获得了如下域 ip:

Host 66.249.92.104 is up (0.55s latency).

有没有办法将输出作为域而不是 ips?

答案1

添加 -oG(“greppable output”)选项。

答案2

假设您没有清理输出(即 66.249.92.104 确实是您正在探测的主机之一),问题在于 DNS 中没有该 IP 的 PTR 记录。也就是说,nmap 无法在输出中显示从 IP 到 FQDN 的反向映射。

例如,当 PTR 记录存在时,您将获得以下内容:

$ nmap -sP www.yahoo.com | grep ^Host
Warning: Hostname www.yahoo.com resolves to 2 IPs. Using 72.30.2.43.
Host ir1.fp.vip.sk1.yahoo.com (72.30.2.43) appears to be up.

我建议采用如下两步过程(尽管由于您要为每个探测启动一个新的 nmap 进程,因此效率不高,但您确实将信息保存在一起):

$ cat domains
www.yahoo.com
www.google.com

$ cat nmap-keep-names.sh
#!/bin/sh

for domain in `cat $1`
do
    echo Probing $domain
    nmap -sP $domain 2> /dev/null \
        | grep ^Host
done \
    | sed '$!N;s/\n/ /' \
    | sed 's/Probing //' \
    | sed 's/Host.*(\(.*\)) \(.*\)/(\1) \2/'

$ ./nmap-keep-names.sh domains
www.yahoo.com (72.30.2.43) appears to be up.
www.google.com (66.102.7.104) appears to be up.

在 nmap 运行之前,您只需打印出一条说明,详细说明您正在探测的主机名。然后,您可以格式化输出以使用您提供给 nmap 的信息。

注意 #1 - 1e100.net 是 Google 拥有的域名。因此,即使存在 PTR 记录,也不能保证它是您所期望的。)

注释 #2 - 我最后用 sed 清理了输出。这不是必需的,即使没有它,输出也完全可用。

答案3

使用 -R 将打开反向名称解析。

相关内容