python dnspython 使用时报错list assignment index out of range

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Thinkcortex/article/details/80535960

一个简单的DNS查询功能, 代码如下:

import dns.resolver
def get_hostip(probeDns,host):
    try:
        myResolver = dns.resolver.Resolver()
        i = 0
        for dnsip in probeDns.split(','):
            myResolver.nameservers[i] = dnsip
            i += 1
            break
        answer = myResolver.query(host)
        num = len(answer)
        for j in range(num):
            LOGGER.info("From host[%s] dns[%s] To ip[%s]" % (host,probeDns,answer[j].address))
            return answer[j].address
    except Exception,e:
        print e

    return ""

使用时:

    ip = get_hostip("103.78.125.2,103.78.125.34", "www.baidu.com")
    print (ip)


        一般情况下使用没有问题, 然而, 突然遇到报错list assignment index out of range。 list索引超出范围, 首先确定是哪个list。首先看 myResolver.nameservers, 打印其长度, 为1, 很奇怪。 使用时添加了两个DNS,所以会超出范围。

        排除了一些猜测后, 突然想起了/etc/resolv.conf, 里面只配了1个DNS。 添加了一个后, 代码运行正常, myResolver.nameservers 长度为2。 为什么会受到影响, 暂时没去深究,但是代码是需要修改的,以免再次遇到这种问题。






猜你喜欢

转载自blog.csdn.net/Thinkcortex/article/details/80535960