我有一个包含许多接口相关信息的文件。为简单起见,我的例子只有两个。
我需要能够把它分成不同的变量,我打算稍后再使用。例如,从下面的文本中我想创建名为eth1_ip的变量,其值为10.196.135.30,eth1_mask的变量为255.0.0.0,eth2_ip的值为192.168.4.2等。
我经历过不同的"分裂"和" readfiles"情景,但避风港已经能够解决这个问题。
我是python的新手,任何提示都会受到赞赏。谢谢。
eth1:
Flags: (0x1043) UP BROADCAST MULTICAST TRAILERS ARP RUNNING
Type: GIGABIT_ETHERNET
inet is: 10.196.135.30 Vlan: 0
Netmask: 255.0.0.0
Ethernet address is 00:08:25:21:f8:a0
Metric is 0:
Maximum Transfer Unit size is 1500
eth2:
Flags: (0x1003) UP BROADCAST MULTICAST TRAILERS ARP
Type: UNKNOWN_TYPE
inet is: 192.168.4.2 Vlan: 0
Ethernet address is 00:08:25:21:f8:a1
Metric is 0:
Maximum Transfer Unit size is 1500
我的第一次尝试包括这样的想法:
#!/usr/bin/python
import re, os, sys, fnmatch
import telnetlib
import sys
import time
import difflib
import shutil
def gleen_macs():
text = open('show_interfaces.txt', 'r')
for line in text.readlines():
#print line
if re.match('( Ethernet address)(.*)', line):
values = line.split('is')
print values[1]
def menu():
get_macs()
menu()
我首先专注于mac。我可以拆分它们,但不能按照我的意愿将它们分配给变量。 (" get_macs()"函数只是我用来生成文件的telnetlib位。这是我希望的,不包括在这里。)
答案 0 :(得分:0)
只需单步执行该文件,在每一行中查找关键字,如果某行有您需要提取的内容,请将其保存在字典中,
results = dict()
with open('eth.txt') as f:
for line in f:
line = line.strip()
if line.endswith(':') and not line.startswith('Metric'):
eth = line[:-1]
elif line.startswith('inet'):
line = line.split(':')
ip, _ = line[1].split()
results[eth + '_ip'] = ip
elif line.startswith('Netmask'):
_, mask = line.split(':')
mask = mask.strip()
results[eth + '_mask'] = mask
>>> results
{'eth2_ip': '192.168.4.2', 'eth1_ip': '10.196.135.30', 'eth1_mask': '255.0.0.0'}
>>>
答案 1 :(得分:-1)
(0x1043) UP BROADCAST MULTICAST TRAILERS ARP RUNNING
1500
输出:
"10.196.135.30 Vlan: 0"
我会让你进行额外的解析,例如从actionButton(style= "...")
中获取IP。