繁体   English   中英

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

[英]Get all IP addresses associated with a host

我正在尝试编写一些代码,以获取与给定主机名关联的所有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?

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

例如,如果您在python脚本上运行strace,您将注意到解析器已被调用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM