我正在尝试为给定的域名生成所有可能的IP地址列表.我想我很接近,但不知道我错过了什么(或者是否有更好的方法).
首先,我创建一个域的变体列表,如下所示:
webkinz.com
www.webkinz.com
Run Code Online (Sandbox Code Playgroud)
然后我循环遍历此列表并对每个变体进行挖掘,如下所示:
while read domain; do
IPs=`dig $domain | grep $domain | grep -v ';' | awk '{ print $5 }'`;
echo " ${IPs}" >> /tmp/IPs; #array
done < /tmp/mylist
sort -u /tmp/IPs > /tmp/TheIPs; #remove duplicates
cat /tmp/TheIPs| tr -d "\n" > /tmp/IPs #remove new lines (making it 1 long line)
Run Code Online (Sandbox Code Playgroud)
我的IP文件如下所示:
66.48.69.100 www.webkinz.com.edgesuite.net.a1339.g.akamai.net.
Run Code Online (Sandbox Code Playgroud)
只有3个问题.:-(
dig www.webkinz.com
缺少部分IP地址.那么,我该怎么做呢?我是否以某种方式弄清楚dig是否返回了另一个域而不是ip地址并在该域上运行dig?我是否只是忽略从dig返回的域名,并确定IP地址是否足够?我希望抓住每个可以解析到域名的IP地址.我认为不应该这么难.有任何想法吗?
为了仅获取 IP 地址,请使用dig +short
:
#!/bin/bash
while read -r domain
do
dig +short "$domain"
done < /tmp/mylist | sort -u | awk '{printf "%s ", $0} END {printf "\n"}' > outputfile
Run Code Online (Sandbox Code Playgroud)
或者
#!/bin/bash
echo $(xargs -a /tmp/mylist dig +short | sort -u) > outputfile
Run Code Online (Sandbox Code Playgroud)
将 echo 与不带引号的参数一起使用会删除除末尾之外的换行符。
您不需要任何中间变量或临时文件。