COMMA = L(",").suppress() SEMICOLON = L(";").suppress() AT = L("@").suppress() PUNCTUATION = Word("-_.") IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM) IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END)) NAME = IDENTIFIER("name") EXTRA = IDENTIFIER URI = Regex(r'[^ ]+')("url") URL = (AT + URI) EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA) EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras") VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE) VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE) VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY VERSION_MANY = Combine(VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE), joinString=",", adjacent=False)("_raw_spec") _VERSION_SPEC = Optional(((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY)) _VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or '') VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier") VERSION_SPEC.setParseAction(lambda s, l, t: t[1]) MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
arp = Group("arp" + LBRACE + "sip" + EQUAL + ipAddress("sip") + COMMA + "tip" + EQUAL + ipAddress("tip") + COMMA + "op" + EQUAL + op("op") + COMMA + "sha" + EQUAL + macAddress("sha") + COMMA + "tha" + EQUAL + macAddress("tha") + RBRACE) ipv4 = Group("ipv4" + LBRACE + "src" + EQUAL + ipAddress("src") + COMMA + "dst" + EQUAL + ipAddress("dst") + COMMA + "proto" + EQUAL + proto("proto") + COMMA + "tos" + EQUAL + tos("tos") + COMMA + "ttl" + EQUAL + ttl("ttl") + COMMA + "frag" + EQUAL + frag("frag") + RBRACE) # ipv4(src=193.170.192.143,dst=193.170.192.142,proto=6,tos=0,ttl=64,frag=no),tcp(src=45969,dst=5672), packets:1, bytes:87, used:4.040s, flags:P., actions:1 tcp = Group("tcp" + LBRACE + "src" + EQUAL + src("srcPkt") + COMMA + "dst" + EQUAL + dst("dstPkt") + RBRACE) flowTcp = ( "in_port" + LBRACE + in_port("in_port") + RBRACE + COMMA + eth("eth") + COMMA + Optional("eth_type" + LBRACE + eth_type("eth_type") + RBRACE + COMMA) + Optional(ipv4("ipv4") + COMMA) + Optional(tcp("tcp") + COMMA) + Optional(arp("arp") + COMMA) + "packets" + COLON + packets("packets")) with open('parseopenflows') as f: lines = f.readlines() flag_ipv4 = 0 flag_arp = 0 for line in lines: flowTcpValues = flowTcp.parseString(line) #print (flowTcpValues.dump()) #print (flowTcpValues.packets) #print (flowTcpValues.eth.src) if flowTcpValues.arp: