Juniper firewalls create large syslog files showing all connections between internal/external hosts.
import os import re from pprint import pprint import socket # IP Addresses rip=re.compile("([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/([0-9]+)[- ]") #date time 2017-05-06 23:59:59\t rdt=re.compile("^([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\t") # description ?? JuniperSRX1500Perth RT_FLOW: RT_FLOW_SESSION_CLOSE: session closed response received N/A: 192.168." rdesc=re.compile("(JuniperSRX1500Perth RT_.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/") #rdesc=re.compile("(JuniperSRX1500Perth RT_.*): [0-9]+.") ipsourcetable={} iptargettable={} ipsourcetargetcounttable={} myfilename="/tmp/2017-05-29_SyslogCatchAll.txt" myfilename="/tmp/2017-07-26_SyslogCatchAll.txt" #myfilename="/tmp/test1.txt" import os #for myfilename in os.listdir('/mnt/pa_archives/pa_archives/IT/Syslog_Archives/') : for myfilename in os.listdir('/tmp/2017_07_26_*.txt') : print myfilename if myfilename.startswith('2017-06'): myfilename='/mnt/pa_archives/pa_archives/IT/Syslog_Archives/'+myfilename for line in open(myfilename).readlines(): #parts=line.split(" ") #pprint(line) mydatetime=rdt.findall(line) mydesc=rdesc.findall(line) myips=(rip.findall(line)) #print len(mydesc) #print len(myips) if ( (len(mydesc) >= 1 ) and (len(myips) > 1 ) ) : #pprint(myips[0][0]) #pprint(myips[1][0]) #pprint(myips[1][1]) mysource=myips[0][0] mytarget=myips[1][0] if mysource.startswith('192.168.'): mytargetport=myips[1][1] mytargetname="" mynewline=(mydatetime[0][0]+ "," + mydatetime[0][1]+ "," + mysource + "," + mytarget + "," + mytargetname + "," + mytargetport + ",\"" + mydesc[0] + "\"" ) #print mynewline with open('logs/'+mysource+'_log.txt', 'a') as the_file: the_file.write(mynewline+'\n') else: with open('logs/errors_log.txt','a') as the_file: the_file.write(line)