我目前正在开发一个反向DNS脚本,旨在打开日志文件,找到IP地址,然后将IP解析为DNS。我设置了一个正则表达式来标识文件中的IP地址,但是当我将socket.gethostbyaddr添加到脚本中时,脚本会忽略正则表达式,并仍然列出文件中不是IP地址的对象。我以前从未使用过Python,但我现在有:
import socket
import re
f = open('ipidk.txt' , 'r')
lines = f.readlines()
raw_data = str(f.readlines())
regex = r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})'
foundip = re.findall( regex, raw_data )
for raw_data in lines:
host = raw_data.strip()
try:
dns = socket.gethostbyaddr(host)
print("%s - %s" % (host, dns))
except socket.error as exc:
pass
f.close()发布于 2020-01-22 04:59:10
你给f.readlines()打了两次电话。第一次读取文件中的所有内容,并将其放入lines。第二次没有什么可读的了(它从当前文件位置开始读取,不会倒带到开头),所以它返回一个空列表,raw_data将只是"[]",没有IP。
只需调用f.read()一次,并将其分配给raw_data即可。
然后,您需要遍历使用regexp找到的IP,而不是lines。
import socket
import re
with open('ipidk.txt' , 'r') as f:
raw_data = f.read()
regex = r'(?:\d{1,3}\.){3}\d{1,3}'
foundip = re.findall( regex, raw_data )
for host in foundip:
try:
dns = socket.gethostbyaddr(host)
print("%s - %s" % (host, dns))
except socket.error as exc:
passhttps://stackoverflow.com/questions/59849013
复制相似问题