--- a/bin/pvl.verkko-syslog Thu Jan 03 13:14:29 2013 +0200
+++ b/bin/pvl.verkko-syslog Fri Jan 04 14:19:05 2013 +0200
@@ -1,13 +1,15 @@
#!/usr/bin/env python
"""
- Monitor DHCP use.
+ Syslog -> Irk
"""
__version__ = '0.0'
import pvl.args
import pvl.syslog.args
+import pvl.syslog.rule
+import pvl.irker
import logging, optparse
@@ -31,7 +33,14 @@
# options
parser.add_option_group(pvl.args.parser(parser))
+
+ # input
parser.add_option_group(pvl.syslog.args.parser(parser))
+ parser.add_option_group(pvl.irker.parser(parser))
+
+ # processing
+ parser.add_option('-r', '--rules', metavar='FILE',
+ help="Syslog rules")
# parse
options, args = parser.parse_args(argv[1:])
@@ -41,32 +50,33 @@
return options, args
-# prototype
-import pvl.syslog.rule
-
-sudo = pvl.syslog.rule.SyslogRule('sudo',
- program = 'sudo',
- pattern = r'\s*(?P<login>\S+) : TTY=(?P<tty>\S+) ; PWD=(?P<pwd>.+?) ; USER=(?P<user>\S+) ; COMMAND=(?P<command>.*)',
- format = "{login}:{tty} - {user}@{host}:{pwd} - {command!r}",
-)
-
-sudo_env = pvl.syslog.rule.SyslogRule('sudo',
- program = 'sudo',
- pattern = r'\s*(?P<login>\S+) : TTY=(?P<tty>\S+) ; PWD=(?P<pwd>.+?) ; USER=(?P<user>\S+) ; ENV=(?P<env>.+?) ; COMMAND=(?P<command>.*)',
- format = "{login}:{tty} - {user}@{host}:{pwd} - {env} {command!r}",
-)
-
-rules = pvl.syslog.rule.SyslogRules((sudo_env, sudo))
-
def main (argv) :
options, args = parse_options(argv)
+
+ if args :
+ # XXX: targets
+ target, = args
+ else :
+ target = None
+ log.info("Open syslog...")
syslog = pvl.syslog.args.apply(options)
+
+ log.info("Load rules...")
+ rules = pvl.syslog.rule.config(open(options.rules))
+
+ log.info("Connect IRK..")
+ irk, target = pvl.irker.apply(options, target=target)
+
+ if not target :
+ log.error("No irk target given")
+ return 2
- log.info("Start processing syslog messages...")
-
+ log.info("Process syslog messages...")
for tag, line in rules.process(syslog.loop()) :
- print tag, line
+ # TODO: map tag -> target?
+ log.info("%s", line)
+ target(line)
# done
log.info("Exiting...")