- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
def show_vlans(self):
"""Magic people/Voodoo people. All code in this func should be refactored/rewrited."""
self.read_very_eager()#flush
output=self.wr_cmd_sh('sho vlan')
time.sleep(.1)
vlans={}
vlan=''
for string in output:
if re.search(r"VID[\s]*:",string):
vlan=string[re.search(r"[\d]+",string).start():re.search(r"[\d]+",string).end()]
vlans[vlan]={'Member':[], 'Tagged':[], 'Untagged':[]}
if re.search(r"Member Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
vlans[vlan]['Member'].append(port)
else:
vlans[vlan]['Member'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
if re.search(r"Current Tagged Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
vlans[vlan]['Tagged'].append(port)
else:
vlans[vlan]['Tagged'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
if re.search(r"Current Untagged Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
vlans[vlan]['Untagged'].append(port)
else:
vlans[vlan]['Untagged'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
if vlans=={}:
vlans=self.show_vlans()
#####
return vlans
Императивненько) регекспотренировка при отсутствии group() да и вообще...