From 7b8540ae2a60f2400fe672a022ee00d1415a3500 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 17 Oct 2019 12:07:01 -0700 Subject: [PATCH] netstat fixes --- jc/parsers/netstat.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/jc/parsers/netstat.py b/jc/parsers/netstat.py index 84dea9a5..8cbd66e5 100644 --- a/jc/parsers/netstat.py +++ b/jc/parsers/netstat.py @@ -9,6 +9,7 @@ $ netstat | jc --netstat -p $ netstat -lp | jc --netstat -p """ +import string output = {} @@ -33,14 +34,25 @@ def parse_line(entry): output_line = {} - output_line['local'] = parsed_line[3] - output_line['foreign'] = parsed_line[4] + output_line['local_address'] = parsed_line[3].rsplit(':', 1)[0] + output_line['local_port'] = parsed_line[3].rsplit(':', 1)[-1] + output_line['foreign_address'] = parsed_line[4].rsplit(':', 1)[0] + output_line['foreign_port'] = parsed_line[4].rsplit(':', 1)[-1] + if len(parsed_line) > 5: - output_line['state'] = parsed_line[5] - output_line['recvq'] = int(parsed_line[1]) - output_line['sendq'] = int(parsed_line[2]) - # output_line['pid'] = int(parsed_line[1]) - # output_line['pname'] = int(parsed_line[1]) + + if parsed_line[5][0] not in string.digits: + output_line['state'] = parsed_line[5] + + if len(parsed_line) > 6: + output_line['pid'] = parsed_line[6].split('/')[0] + output_line['program_name'] = parsed_line[6].split('/')[1] + else: + output_line['pid'] = parsed_line[5].split('/')[0] + output_line['program_name'] = parsed_line[5].split('/')[1] + + output_line['receive_q'] = int(parsed_line[1]) + output_line['send_q'] = int(parsed_line[2]) return output_line