import re
var = """
sw1:FID256:root> ipaddrshow
CHASSIS
Ethernet IP Address: 10.17.11.10
Ethernet Subnetmask: 255.255.210.0
CP0
Ethernet IP Address: 10.17.11.11
Ethernet Subnetmask: 255.255.210.0
Host Name: cp0
Gateway IP Address: 10.17.48.1
CP1
Ethernet IP Address: 10.17.11.12
Ethernet Subnetmask: 255.255.210.0
Host Name: cp1
Gateway IP Address: 10.17.18.1
sw1:FID256:root>
"""
rgx = re.compile(r'(?P<name>^[A-Z0-9]+)\n|(?P<attr>^[\w]+[^:]+):\s(?P<val>[\d\w\.]+)\n', re.MULTILINE)
dict = {
"Ethernet IP Address": "ip",
"Ethernet Subnetmask": "mask",
"Gateway IP Address": "gw",
"Host Name": ""
}
def translate(attr):
return dict[attr]
def build_list(r):
entry = ""
name = ""
for l in rgx.finditer(var):
if(l.group("name")):
if(entry):
r.append(entry[:-1])
entry = ""
name = l.group("name").lower()
elif(l.group("attr")):
varname = translate(l.group("attr"))
value = l.group("val")
if(varname != ""):
entry += "{0},{1} {2} ".format(name, varname, value)
r.append(entry[:-1])
entry = ""
def build_dict(d):
entry = ""
name = ""
for l in rgx.finditer(var):
if(l.group("name")):
name = l.group("name").lower()
d[name] = {}
elif(l.group("attr")):
varname = translate(l.group("attr"))
value = l.group("val")
if(varname != ""):
d[name][varname] = value
r = []
build_list(r)
print r
d = {}
build_dict(d)
print d
aW1wb3J0IHJlCgp2YXIgPSAiIiIKCnN3MTpGSUQyNTY6cm9vdD4gaXBhZGRyc2hvdyAKCkNIQVNTSVMKRXRoZXJuZXQgSVAgQWRkcmVzczogMTAuMTcuMTEuMTAKRXRoZXJuZXQgU3VibmV0bWFzazogMjU1LjI1NS4yMTAuMAoKQ1AwCkV0aGVybmV0IElQIEFkZHJlc3M6IDEwLjE3LjExLjExCkV0aGVybmV0IFN1Ym5ldG1hc2s6IDI1NS4yNTUuMjEwLjAKSG9zdCBOYW1lOiBjcDAKR2F0ZXdheSBJUCBBZGRyZXNzOiAxMC4xNy40OC4xCgpDUDEKRXRoZXJuZXQgSVAgQWRkcmVzczogMTAuMTcuMTEuMTIKRXRoZXJuZXQgU3VibmV0bWFzazogMjU1LjI1NS4yMTAuMApIb3N0IE5hbWU6IGNwMQpHYXRld2F5IElQIEFkZHJlc3M6IDEwLjE3LjE4LjEKCnN3MTpGSUQyNTY6cm9vdD4KIiIiCgpyZ3ggPSByZS5jb21waWxlKHInKD9QPG5hbWU+XltBLVowLTldKylcbnwoP1A8YXR0cj5eW1x3XStbXjpdKyk6XHMoP1A8dmFsPltcZFx3XC5dKylcbicsIHJlLk1VTFRJTElORSkKCmRpY3QgPSB7CiAgICAiRXRoZXJuZXQgSVAgQWRkcmVzcyI6ICJpcCIsCiAgICAiRXRoZXJuZXQgU3VibmV0bWFzayI6ICJtYXNrIiwKICAgICJHYXRld2F5IElQIEFkZHJlc3MiOiAiZ3ciLAogICAgIkhvc3QgTmFtZSI6ICIiCn0KCmRlZiB0cmFuc2xhdGUoYXR0cik6CiAgICByZXR1cm4gZGljdFthdHRyXQoKZGVmIGJ1aWxkX2xpc3Qocik6CiAgICBlbnRyeSA9ICIiCiAgICBuYW1lID0gIiIKCiAgICBmb3IgbCBpbiByZ3guZmluZGl0ZXIodmFyKToKCiAgICAgICAgaWYobC5ncm91cCgibmFtZSIpKToKICAgICAgICAgICAgaWYoZW50cnkpOgogICAgICAgICAgICAgICAgci5hcHBlbmQoZW50cnlbOi0xXSkKICAgICAgICAgICAgICAgIGVudHJ5ID0gIiIKCiAgICAgICAgICAgIG5hbWUgPSBsLmdyb3VwKCJuYW1lIikubG93ZXIoKQoKICAgICAgICBlbGlmKGwuZ3JvdXAoImF0dHIiKSk6CiAgICAgICAgICAgIHZhcm5hbWUgPSB0cmFuc2xhdGUobC5ncm91cCgiYXR0ciIpKQogICAgICAgICAgICB2YWx1ZSA9IGwuZ3JvdXAoInZhbCIpCgogICAgICAgICAgICBpZih2YXJuYW1lICE9ICIiKToKICAgICAgICAgICAgICAgIGVudHJ5ICs9ICJ7MH0sezF9IHsyfSAiLmZvcm1hdChuYW1lLCB2YXJuYW1lLCB2YWx1ZSkKCiAgICByLmFwcGVuZChlbnRyeVs6LTFdKQogICAgZW50cnkgPSAiIgoKZGVmIGJ1aWxkX2RpY3QoZCk6CiAgICBlbnRyeSA9ICIiCiAgICBuYW1lID0gIiIKCiAgICBmb3IgbCBpbiByZ3guZmluZGl0ZXIodmFyKToKCiAgICAgICAgaWYobC5ncm91cCgibmFtZSIpKToKICAgICAgICAgICAgbmFtZSA9IGwuZ3JvdXAoIm5hbWUiKS5sb3dlcigpCiAgICAgICAgICAgIGRbbmFtZV0gPSB7fQogICAgICAgIGVsaWYobC5ncm91cCgiYXR0ciIpKToKICAgICAgICAgICAgdmFybmFtZSA9IHRyYW5zbGF0ZShsLmdyb3VwKCJhdHRyIikpCiAgICAgICAgICAgIHZhbHVlID0gbC5ncm91cCgidmFsIikKCiAgICAgICAgICAgIGlmKHZhcm5hbWUgIT0gIiIpOgogICAgICAgICAgICAgICAgZFtuYW1lXVt2YXJuYW1lXSA9IHZhbHVlCgpyID0gW10KCmJ1aWxkX2xpc3QocikKCnByaW50IHIKCmQgPSB7fQoKYnVpbGRfZGljdChkKQoKcHJpbnQgZA==
['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'}}