我的公司托管 2 个数据中心,预计流量将以循环方式路由。我们有很多 URL,预计流量将由两个 DC 提供。我通过连续的 nslookup 检查流量是否到达两个 DC
for i in {1..100}; do nslookup www.xyz.com ; done | grep 'Address:' | grep -v 10 | sort | uniq | wc -l
如果字数为 1,我知道流量只会流向一个 DC,这是一个错误,但是,如果输出为 2,我知道一切都按预期运行。
目前,我有很多网站,并将它们放在一个文件中。我想编写一个脚本来“cat”文件并对每个整体进行 nslookup,回显条目和字数统计变量。希望输出看起来像
www.xyz.com ==> 2 DCs active
www.123.com ==> 1 DC active
我想不出实现此输出的逻辑。请求您的支持..
最佳答案
免责声明:我假设这里不涉及选播。
首先,最好指定您要询问的 DNS 服务器。使用狂野的 nslookup 可能会为您提供缓存数据。
因此,假设它们都由同一 DNS 服务器提供服务(并且这些不是任播),您可以使用 dig @DNSSERVER +short <query>
轻松(清楚地)查找规则。
所以首先创建一个像这样的文本文件..(第一个变量行是域,逗号后面是您要查找的 DNS 服务器)
domains.txt:
google.com,4.2.2.3
sampledomain.org,8.8.4.4
joeblogs.net,
我故意让 joeblogs 没有可供查找的 DNS 服务器,它将回退到您工作站上的默认 DNS 服务器或缓存
现在我制作了一个简单的脚本:
- 逐行循环文件
- 总结 DNS 结果
- 每 10 秒重新开始
dig.sh
#!/usr/bin/env bash
DEFAULT_DNS_SERVER=4.2.2.3
while true ; do
while read line
do
domain="$(cut -d "," -f 1 <<<"$line")"
server="$(cut -d "," -f 2 <<<"$line")"
if [ "X$server" == "X" ]; then
export server="$DEFAULT_DNS_SERVER"
fi
result="$(dig +short @"$server" "$domain" | wc -l)"
echo "$domain ==> ${result} DCs active"
done < domains.txt
sleep 10
done
然后运行它.. EG:
stark@fourier ~ $ ./dig.sh
google.com ==> 6 DCs active
sampledomain.org ==> 4 DCs active
joeblogs.net ==> 1 DCs active
google.com ==> 11 DCs active
sampledomain.org ==> 4 DCs active
joeblogs.net ==> 1 DCs active
...等等...
要在基于 ubuntu 的现代发行版上安装“dig”(我使用 Mint Cinnamon):
sudo apt-get install dnsutils
祝你好运
关于linux - Shell 脚本支持——不同 URL 上的多个 nslookups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120487/