From 087a60bc2adf64bfcedc1f264fef328f993b530c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 30 Oct 2019 13:52:31 -0700 Subject: [PATCH] documentation updates --- README.md | 33 ++++++++++++++++++++++++++ jc/parsers/arp.py | 59 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 87 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fb417fae..6b03ae20 100755 --- a/README.md +++ b/README.md @@ -96,6 +96,13 @@ $ arp | jc --arp -p "flags_mask": "C", "iface": "ens33" }, + { + "address": "192.168.71.1", + "hwtype": "ether", + "hwaddress": "00:50:56:c0:00:08", + "flags_mask": "C", + "iface": "ens33" + }, { "address": "192.168.71.254", "hwtype": "ether", @@ -105,6 +112,32 @@ $ arp | jc --arp -p } ] ``` +``` +$ arp -a | jc --arp -p +[ + { + "name": "?", + "address": "192.168.71.1", + "hwtype": "ether", + "hwaddress": "00:50:56:c0:00:08", + "iface": "ens33" + }, + { + "name": "?", + "address": "192.168.71.254", + "hwtype": "ether", + "hwaddress": "00:50:56:fe:7a:b4", + "iface": "ens33" + }, + { + "name": "_gateway", + "address": "192.168.71.2", + "hwtype": "ether", + "hwaddress": "00:50:56:f7:4a:fc", + "iface": "ens33" + } +] +``` ### df ``` $ df | jc --df -p diff --git a/jc/parsers/arp.py b/jc/parsers/arp.py index bf9d3a3e..8288f2fe 100644 --- a/jc/parsers/arp.py +++ b/jc/parsers/arp.py @@ -14,6 +14,13 @@ $ arp | jc --arp -p "flags_mask": "C", "iface": "ens33" }, + { + "address": "192.168.71.1", + "hwtype": "ether", + "hwaddress": "00:50:56:c0:00:08", + "flags_mask": "C", + "iface": "ens33" + }, { "address": "192.168.71.254", "hwtype": "ether", @@ -22,6 +29,31 @@ $ arp | jc --arp -p "iface": "ens33" } ] + +$ arp -a | jc --arp -p +[ + { + "name": "?", + "address": "192.168.71.1", + "hwtype": "ether", + "hwaddress": "00:50:56:c0:00:08", + "iface": "ens33" + }, + { + "name": "?", + "address": "192.168.71.254", + "hwtype": "ether", + "hwaddress": "00:50:56:fe:7a:b4", + "iface": "ens33" + }, + { + "name": "_gateway", + "address": "192.168.71.2", + "hwtype": "ether", + "hwaddress": "00:50:56:f7:4a:fc", + "iface": "ens33" + } +] """ @@ -36,10 +68,27 @@ def parse(data): if cleandata[-1].find("Entries:") == 0: cleandata.pop(-1) - # fix header row to change Flags Mask to flags_mask - cleandata[0] = cleandata[0].replace('Flags Mask', 'flags_mask') + # detect if linux or bsd style was used + if cleandata[0].find('Address') == 0: - headers = [h for h in ' '.join(cleandata[0].lower().strip().split()).split() if h] - raw_data = map(lambda s: s.strip().split(None, len(headers) - 1), cleandata[1:]) + # fix header row to change Flags Mask to flags_mask + cleandata[0] = cleandata[0].replace('Flags Mask', 'flags_mask') - return [dict(zip(headers, r)) for r in raw_data] + headers = [h for h in ' '.join(cleandata[0].lower().strip().split()).split() if h] + raw_data = map(lambda s: s.strip().split(None, len(headers) - 1), cleandata[1:]) + + return [dict(zip(headers, r)) for r in raw_data] + + else: + output = [] + for line in cleandata: + line = line.split() + output_line = {} + output_line['name'] = line[0] + output_line['address'] = line[1].lstrip('(').rstrip(')') + output_line['hwtype'] = line[4].lstrip('[').rstrip(']') + output_line['hwaddress'] = line[3] + output_line['iface'] = line[6] + output.append(output_line) + + return output