通过nslookup命令搜索我自己的ip地址来自其他许多ip

时间:2017-04-05 20:02:28

标签: bash shell for-loop sh

我有很多带有静态IP地址的虚拟服务器,并且有针对它们的A记录。我应该使用关联数组来安装我的CMS。但我有想法。也许我应该使用挖掘,或其他dnsutil为此? 那么,我开始写的是:

start=test
dns=com
for i in "${start}" {1..20}."$dns"; do
echo $i >> "/tmp/temp"
done

for ns in `cat /tmp/temp`; do
if [[ `dig +short $ns=="192.168.110.1"` ]]; then
dig +short $ns
fi
done

但是我的第二次循环出错了。你能帮助我吗 ? 我应该生成一个包含我的域名的列表,例如test1.com,test2.com ...... 之后我应该得到IP地址。下一步将与我的系统IP进行比较,如果我有ip 192.168.110.1,我应该得到我的域名,如test2.com。它不起作用,我打破了我的头,但我不知道,怎么做。如果可能的话,请帮忙。

1 个答案:

答案 0 :(得分:0)

立即错误是[[ `dig +short $ns=="192.168.110.1"` ]]只检查dig的输出是否为非空字符串(它不是,因为您作为查询传入的字符串不是'有效的一个)。表面的解决方法是

if [[ `dig +short "$ns"` == "192.168.110.1" ]]; then ...

其中equals运算符周围的空格很重要,当然,不应将比较作为参数传递给dig;但我会更多地重构你的剧本。目前还不完全清楚你希望脚本做什么,但这样的事情呢?

#!/bin/bash
start=test
dns=com
for i in {1..20}; do
    host="$start.$i.$dns"
    ip=$(dig +short "$host")
    if [[ "$ip" == "192.168.110.1" ]]; then
        # I'm guessing you want to perform a reverse lookup on the IP address here?
        dig +short "$ip"
    fi
done