1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-19 00:17:51 +02:00

add arp parser

This commit is contained in:
Kelly Brazil
2019-10-30 13:00:05 -07:00
parent 83ab10d628
commit 87cee8b230
2 changed files with 28 additions and 1 deletions

View File

@ -7,6 +7,7 @@ Main input module
import sys
import signal
import json
import jc.parsers.arp
import jc.parsers.df
import jc.parsers.env
import jc.parsers.free
@ -30,6 +31,7 @@ import jc.parsers.w
def helptext():
print('Usage: jc PARSER [OPTIONS]\n', file=sys.stderr)
print('Parsers:', file=sys.stderr)
print(' --arp arp parser', file=sys.stderr)
print(' --df df parser', file=sys.stderr)
print(' --env env parser', file=sys.stderr)
print(' --free free parser', file=sys.stderr)
@ -74,7 +76,10 @@ def main():
pretty = True
# parsers
if '--df' in sys.argv:
if '--arp' in sys.argv:
result = jc.parsers.arp.parse(data)
elif '--df' in sys.argv:
result = jc.parsers.df.parse(data)
elif '--env' in sys.argv:

22
jc/parsers/arp.py Normal file
View File

@ -0,0 +1,22 @@
"""jc - JSON CLI output utility arp Parser
Usage:
specify --arp as the first argument if the piped input is coming from arp
Example:
$ arp | jc --arp -p
"""
def parse(data):
# code adapted from Conor Heine at:
# https://gist.github.com/cahna/43a1a3ff4d075bcd71f9d7120037a501
cleandata = data.splitlines()
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]