我想从一个文本文件中解析主机名的ip地址。以下代码适用于ipv4地址:
hostname1.txt:
google.com
yahoo.com
facebook.com
cnn.comwith open('hostname1.txt','r') as hostnames:
for website in hostnames:
ip = socket.gethostbyname(website.strip())
print ('{0} ip address is: {1}'.format(website,ip))对于ipv6,我使用了下面的代码,当文本文件中只有一个主机名时,它工作得很好。如果文本文件中有多个主机名,我会收到这个错误消息"gaierror: Errno 8 nodename or servname provided,or not known“
import socket
with open('hostname1.txt') as f:
hostname = f.readlines()
for website in hostname:
ais = socket.getaddrinfo(website,0,0,0,0)
for result in ais:
ip = result[-1][0]
print ('{0} ip address is {1}'.format(website,ip))gaierror: [Errno 8] nodename nor servname provided, or not known发布于 2020-10-09 13:59:04
readlines 保留换行符,所以你的hostname列表是 ['google.com\n', 'yahoo.com\n', 'facebook.com\n', 'cnn.com\n'] 你在 IPV4 部分剥离了 \nl不在 IPV6 部分。使用以下内容:
ais = socket.getaddrinfo(website.rstrip(),0,0,0,0)你会得到正确的结果。
https://stackoverflow.com/questions/64260272
复制相似问题