【发布时间】:2017-09-10 04:31:48
【问题描述】:
我正在做一个项目来搜索 IP 地址并查看它是否在日志文件中。我取得了一些不错的进展,但在处理以日志文件格式搜索某些项目时卡住了。
这是我所拥有的:
IP = raw_input('Enter IP Address:')
with open ('RoutingTable.txt', 'r') as searchIP:
for line in searchIP:
if IP in line:
ipArray = line.split()
print ipArray
if IP == ipArray[0]:
print "Success"
else:
print "Fail"
如您所见,这是非常糟糕的代码,但我是 Python 和编程新手,所以我用它来确保我至少可以打开文件并将第一项与我输入的字符串进行比较。
她是一个示例文件内容(我的实际文件有数千个条目):
我想要一种方法将所有 IP(只是 IP,而不是其他垃圾)存储在一个数组中,然后循环遍历数组中的所有项目并与用户定义的 IP 进行比较。
例如,对于这条线所有关心的是10.20.70.0/23
D EX 10.20.70.0/23 [170/3072] via 10.10.10.2, 6d06h, Vlan111
[170/3072] via 10.10.10.2, 6d06h, Vlan111
[170/3072] via 10.10.10.2, 6d06h, Vlan111
[170/3072] via 10.10.10.2, 6d06h, Vlan111
请帮忙。
谢谢 达蒙
编辑:我正在研究设置标志,但这仅在某些情况下有效,因为您可以看到所有行都不以 D 开头,但有一些以 O(对于 OSFP 路由)和 C(直接连接)开头。
这是我正在做的事情:
f = open("RoutingTable.txt")
Pr = False
for line in f.readlines():
if Pr: print line
if "EX" in line:
Pr = True
print line
if "[" in line:
Pr = False
f.close()
这给了我一个更清晰的结果,但仍然是整行,而不仅仅是 IP。
【问题讨论】:
-
严格来说,这里的问题是解析您的日志文件格式。我相应地标记并重新命名。如果您告诉我们更多有关日志文件格式的信息,它是什么名称/包/工具,可能会有所帮助?
标签: python python-2.7 parsing ip-address logfile