1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-23 00:29:59 +02:00
This commit is contained in:
Kelly Brazil
2019-10-18 09:57:22 -07:00
parent 756c2bc9ac
commit cec73d6131
4 changed files with 24 additions and 16 deletions

View File

@ -138,6 +138,7 @@ import string
output = {}
class state():
section = ''
session = ''
@ -147,12 +148,13 @@ class state():
client_tcp_ip6 = []
client_udp_ip4 = []
client_udp_ip6 = []
server_tcp_ip4 = []
server_tcp_ip6 = []
server_udp_ip4 = []
server_udp_ip6 = []
def parse_line(entry):
parsed_line = entry.split()
output_line = {}
@ -166,7 +168,7 @@ def parse_line(entry):
if parsed_line[5][0] not in string.digits:
output_line['state'] = parsed_line[5]
if len(parsed_line) > 6:
output_line['pid'] = int(parsed_line[6].split('/')[0])
output_line['program_name'] = parsed_line[6].split('/')[1]
@ -179,6 +181,7 @@ def parse_line(entry):
return output_line
def parse(data):
cleandata = data.splitlines()
@ -191,13 +194,13 @@ def parse(data):
if line.find('Active Internet connections (only servers)') == 0:
state.section = 'server'
continue
if line.find('Proto') == 0:
continue
if line.find('Active UNIX') == 0:
break
if state.section == 'client':
if line.find('tcp') == 0:
state.session = 'tcp'
@ -225,6 +228,7 @@ def parse(data):
else:
state.network = 'ipv4'
# client section
if state.section == 'client' and state.session == 'tcp' and state.network == 'ipv4':
state.client_tcp_ip4.append(parse_line(line))
@ -237,7 +241,7 @@ def parse(data):
if state.section == 'client' and state.session == 'udp' and state.network == 'ipv6':
state.client_udp_ip6.append(parse_line(line))
# server section
if state.section == 'server' and state.session == 'tcp' and state.network == 'ipv4':
state.server_tcp_ip4.append(parse_line(line))
@ -254,6 +258,7 @@ def parse(data):
state.network = ''
# build dictionary
# client section
if state.client_tcp_ip4:
if 'client' not in output:
output['client'] = {}
@ -281,8 +286,8 @@ def parse(data):
if 'udp' not in output['client']:
output['client']['udp'] = {}
output['client']['udp']['ipv6'] = state.client_udp_ip6
# server section
if state.server_tcp_ip4:
if 'server' not in output:
output['server'] = {}
@ -303,7 +308,7 @@ def parse(data):
if 'udp' not in output['server']:
output['server']['udp'] = {}
output['server']['udp']['ipv4'] = state.server_udp_ip4
if state.server_udp_ip6:
if 'server' not in output:
output['server'] = {}
@ -311,4 +316,4 @@ def parse(data):
output['server']['udp'] = {}
output['server']['udp']['ipv6'] = state.server_udp_ip6
return output
return output