bin/pvl.verkko-syslog
author Tero Marttila <terom@fixme.fi>
Fri, 04 Jan 2013 21:12:18 +0200
changeset 56 ff184e09ceb9
parent 55 cbdd49b76f16
child 58 64885a7c6e85
permissions -rwxr-xr-x
pvl.syslog.filter: fix true/false/filenotfound snafu
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
     4
    Syslog -> Irk
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
"""
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
__version__ = '0.0'
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
import pvl.args
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
import pvl.syslog.args
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    11
import pvl.syslog.rule
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    12
import pvl.irker
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
import logging, optparse
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
log = logging.getLogger('main')
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
def parse_options (argv) :
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    """
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        Parse command-line arguments.
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    """
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    prog = argv[0]
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
    parser = optparse.OptionParser(
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
            prog        = prog,
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
            usage       = '%prog: [options]',
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
            version     = __version__,
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
            # module docstring
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
            description = __doc__,
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    )
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    # options
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    parser.add_option_group(pvl.args.parser(parser))
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    36
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    37
    # input
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    parser.add_option_group(pvl.syslog.args.parser(parser))
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    39
    parser.add_option_group(pvl.syslog.rule.parser(parser))
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    40
    parser.add_option_group(pvl.irker.parser(parser))
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    # parse
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
    options, args = parser.parse_args(argv[1:])
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
    
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
    # apply
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
    pvl.args.apply(options, prog)
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
    return options, args
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
def main (argv) :
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
    options, args = parse_options(argv)
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    52
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    53
    if args :
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    54
        # XXX: targets
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    55
        target, = args
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    56
    else :
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    57
        target = None
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    59
    log.info("Open syslog...")
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    syslog = pvl.syslog.args.apply(options)
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    61
    
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    62
    log.info("Load rules...")
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    63
    rules = pvl.syslog.rule.apply(options)
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    64
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    65
    log.info("Connect IRK..")
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    66
    irk, target = pvl.irker.apply(options, target=target)
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    67
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
  
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    69
    log.info("Process syslog messages...")
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    70
    for item in syslog :
55
cbdd49b76f16 pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    71
        match = rules.apply(item)
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    72
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    73
        if not match :
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    74
            continue
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    75
55
cbdd49b76f16 pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    76
        log.info("%s", match)
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    77
48
40ccb8d3c96e pvl.verkko-syslog: syslog -> irker gateway
Tero Marttila <terom@fixme.fi>
parents: 47
diff changeset
    78
        # TODO: map tag -> target?
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    79
        if target :
55
cbdd49b76f16 pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    80
            target(match)
51
96d204b146b4 pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    81
        else :
55
cbdd49b76f16 pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    82
            print match
43
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
    
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
    # done
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
    log.info("Exiting...")
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    return 0
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
if __name__ == '__main__':
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
    import sys
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
9d13b101beab pvl.syslog: implement pvl.syslog.args.apply -> SyslogSource as in pvl.verkko-dhcp
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
    sys.exit(main(sys.argv))