获取与主机关联的所有IP地址

时间:2014-10-28 13:55:57

标签: python python-2.7

我试图编写一些可以获取与给定主机名相关联的所有IP地址的代码。

这是我到目前为止所做的:

def getips(hostname):
    try:
        result = socket.getaddrinfo(hostname, None, socket.AF_INET,\
            socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME)
        list = [x[4][0] for x in result]
        return list
    except Exception, err:
        print "error"
    return ""


ips = getips('bbc.co.uk')                                                   

print ips

问题是,在这个例子中,有时会返回与特定主机关联的所有4个IP,有时它只返回一个。有没有办法在Python中执行此操作,以便始终返回与主机关联的所有IP?

1 个答案:

答案 0 :(得分:1)

getaddrinfo()调用主机上的解析程序库以查找任何给定主机的IP地址。 python中没有特殊的魔法可以强制它获得与解析器显示的不同的结果集。

例如,如果你在python脚本上运行strace,你会注意到调用了解析器:

open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3