我试图编写一些可以获取与给定主机名相关联的所有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?
答案 0 :(得分:1)
getaddrinfo()
调用主机上的解析程序库以查找任何给定主机的IP地址。 python中没有特殊的魔法可以强制它获得与解析器显示的不同的结果集。
例如,如果你在python脚本上运行strace,你会注意到调用了解析器:
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3