[英]How to use Python to put a CSV list of ips in iptables / IP Sets?
[英]Use IP list in CSV in python
因此,我將這個IP地址列表保存在CSV文件中。 只有一列,如果我將文件放在目錄中,它們全部出現在不同的行上,並且file命令告訴我這是ASCII文本。
但是,當我嘗試循環瀏覽文件並解析不同IP的地址時,出現錯誤“ socket.herror:[Errno 1]未知主機”。
由於某種原因,單元格的值不是正確的字符串,因此我很難將其轉換為一個字符串。
from string import rstrip
from socket import gethostbyaddr
csv_file = open('csv_list.csv', "r")
for line in csv_file:
dns_name = gethostbyaddr(str(line.rstrip('\n')))
print "IP: " + line.rstrip('\n') + "DNS Name:" + dns_name[0]
有沒有辦法解決? 我一直在考慮將文件轉換為純文本文件,到目前為止將文件中的所有值添加到列表中,但我不確定最好的解決方案是什么。
有人有想法么?
提前致謝!
您的問題不是讀取文件(也可以使用with ...
進行優化),但是不能反向查找一個IP。 在這種情況下, gethostbyaddr
函數將引發異常。
我對您的示例進行了一些整理,現在它報告的錯誤不是崩潰(帶有異常),而是打印出一條消息。
from string import rstrip
from socket import gethostbyaddr
with open('csv_list.csv', 'r') as csv_file:
for line in csv_file:
ip = line.strip()
try:
dns_name = gethostbyaddr(ip)
print "IP: %s, DNS Name: %s" % (ip, dns_name[0])
except Exception, e:
print "IP: %s, DNS lookup error: %s" % (ip, e)
例如,此IP列表:
1.2.3.4
8.8.8.8
4.4.4.4
bad IP
1.2.3
它打印
IP: 1.2.3.4, DNS lookup error: [Errno 1] Unknown host
IP: 8.8.8.8, DNS Name: google-public-dns-a.google.com
IP: 4.4.4.4, DNS lookup error: [Errno 1] Unknown host
IP: bad IP, DNS lookup error: [Errno 8] nodename nor servname provided, or not known
IP: 1.2.3, DNS lookup error: [Errno 1] Unknown host
您也可以嘗試使用numpy loadtxt從文件創建數組。
from numpy import loadtxt
ip_list = loadtxt("filename.csv", unpack=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.