import sys,os import re import argparse class doc_driver(object): args=None; def str_hex_to_ip(ip_hex): bytes = ["".join(x) for x in zip(*[iter(ip_hex)]*2)] bytes = [int(x, 16) for x in bytes] s=".".join(str(x) for x in bytes) return s class CTemplateFile: def __init__ (self): self.l=[]; def dump (self): print "pkt,time sec,template,fid,flow-pkt-id,client_ip,client_port,server_ip ,desc" for obj in self.l: s=''; if obj[7]=='1': s ='->' else: s ='<-' print obj[0],",",obj[1],",",obj[6],",", obj[2],",",obj[4],",",str_hex_to_ip(obj[11]),",",obj[13],",",str_hex_to_ip(obj[12]),",",s def dump_sj (self): flows=0; print "[" for obj in self.l: print "[", print obj[1],",",int("0x"+obj[2],16),",",obj[6],",",obj[4], print "]," print "]" def load_file (self,file): f=open(file,'r'); x=f.readlines() f.close(); found=False; for line in x: if found : line=line.rstrip('\n'); info=line.split(','); if len(info)>5: self.l+=[info]; else: break; else: if 'pkt_id' in line: found=True; def do_main (): temp = CTemplateFile(); temp.load_file(doc_driver.args.file) temp.dump(); temp.dump_sj(); def process_options (): parser = argparse.ArgumentParser(usage=""" doc_process -f """, description="process bp-sim output for docomentation", epilog=" written by hhaim"); parser.add_argument("-f", "--file", dest="file", metavar="file", required=True) parser.add_argument('--version', action='version', version="0.1" ) doc_driver.args = parser.parse_args(); def main (): try: process_options (); do_main () exit(0); except Exception, e: print str(e); exit(-1); if __name__ == "__main__": main()