将Netscaler show输出转换为BNF进行解析

时间:2014-07-10 11:51:37

标签: python pyparsing bnf netscaler

我是pyparsing的新手,需要帮助将下面的输出解析成字典对象

MONLB01> sh lb vserver montest_4567_VS2
    montest_4567_VS2 (167.22.55.130:4567) - TCP    Type: ADDRESS
    State: DOWN
    Effective State: DOWN
    Client Idle Timeout: 9000 sec
    Down state flush: ENABLED
    Configured Method: ROUNDROBIN
    Mode: IP
    Persistence: NONE
    Connection Failover: DISABLED
1) montest_6248_S3 (177.24.41.3: 6248) - TCP State: DOWN      Weight: 1
2) montest_6248_S4 (177.24.41.3: 6248) - TCP State: DOWN      Weight: 1
   Done

更新

    from pyparsing import \
    Literal, Word, ZeroOrMore, Group, Dict, Optional, \
    printables, ParseException, restOfLine
    import pprint


    inibnf = None
    def inifile_BNF():
    <!!!!!Parsing Logic!!!Need Help here>
    return inibnf


pp = pprint.PrettyPrinter(2)
def test( strng ):
   print strng
    try:
        iniFile = file(strng)
        iniData = "".join( iniFile.readlines() )
        bnf = inifile_BNF()
        tokens = bnf.parseString( iniData )
        pp.pprint( tokens.asList() )

    except ParseException, err:
        print err.line
        print " "*(err.column-1) + "^"
        print err

iniFile.close()
ini = test("netscalerout.txt")

从上面我需要使用pyparsing库编写解析逻辑

1 个答案:

答案 0 :(得分:2)

我想,textFSM最适合这个。