fork download
  1. import re
  2.  
  3. var = """
  4.  
  5. sw1:FID256:root> ipaddrshow
  6.  
  7. CHASSIS
  8. Ethernet IP Address: 10.17.11.10
  9. Ethernet Subnetmask: 255.255.210.0
  10.  
  11. CP0
  12. Ethernet IP Address: 10.17.11.11
  13. Ethernet Subnetmask: 255.255.210.0
  14. Host Name: cp0
  15. Gateway IP Address: 10.17.48.1
  16.  
  17. CP1
  18. Ethernet IP Address: 10.17.11.12
  19. Ethernet Subnetmask: 255.255.210.0
  20. Host Name: cp1
  21. Gateway IP Address: 10.17.18.1
  22.  
  23. sw1:FID256:root>
  24. """
  25.  
  26. rgx = re.compile(r'(?P<name>^[A-Z0-9]+)\n|(?P<attr>^[\w]+[^:]+):\s(?P<val>[\d\w\.]+)\n', re.MULTILINE)
  27.  
  28. dict = {
  29. "Ethernet IP Address": "ip",
  30. "Ethernet Subnetmask": "mask",
  31. "Gateway IP Address": "gw",
  32. "Host Name": ""
  33. }
  34.  
  35. def translate(attr):
  36. return dict[attr]
  37.  
  38. def build_list(r):
  39. entry = ""
  40. name = ""
  41.  
  42. for l in rgx.finditer(var):
  43.  
  44. if(l.group("name")):
  45. if(entry):
  46. r.append(entry[:-1])
  47. entry = ""
  48.  
  49. name = l.group("name").lower()
  50.  
  51. elif(l.group("attr")):
  52. varname = translate(l.group("attr"))
  53. value = l.group("val")
  54.  
  55. if(varname != ""):
  56. entry += "{0},{1} {2} ".format(name, varname, value)
  57.  
  58. r.append(entry[:-1])
  59. entry = ""
  60.  
  61. def build_dict(d):
  62. entry = ""
  63. name = ""
  64.  
  65. for l in rgx.finditer(var):
  66.  
  67. if(l.group("name")):
  68. name = l.group("name").lower()
  69. d[name] = {}
  70. elif(l.group("attr")):
  71. varname = translate(l.group("attr"))
  72. value = l.group("val")
  73.  
  74. if(varname != ""):
  75. d[name][varname] = value
  76.  
  77. r = []
  78.  
  79. build_list(r)
  80.  
  81. print r
  82.  
  83. d = {}
  84.  
  85. build_dict(d)
  86.  
  87. print d
Success #stdin #stdout 0s 9024KB
stdin
Standard input is empty
stdout
['chassis,ip 10.17.11.10 chassis,mask 255.255.210.0', 'cp0,ip 10.17.11.11 cp0,mask 255.255.210.0 cp0,gw 10.17.48.1', 'cp1,ip 10.17.11.12 cp1,mask 255.255.210.0 cp1,gw 10.17.18.1']
{'cp0': {'gw': '10.17.48.1', 'ip': '10.17.11.11', 'mask': '255.255.210.0'}, 'cp1': {'gw': '10.17.18.1', 'ip': '10.17.11.12', 'mask': '255.255.210.0'}, 'chassis': {'ip': '10.17.11.10', 'mask': '255.255.210.0'}}