我正在尝试使用 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 将打开反向名称解析。