#!/usr/bin/env python import sexpr import os import fcntl import select import sys from abstfilter import AbstractConsumer class Growler(AbstractConsumer): def __init__(self): return def feed(self, s): if s is None or type(s) is type(''): return print repr(s) d = dict([(ss[0], len(ss) > 2 and ss[2] or None) for ss in s]) if d['tzcspew'] == 'message': zclass = d['class'].lower() zinstance = d['instance'].lower() zop = d['opcode'].lower() zsender = d['sender'].lower() zauth = d['auth'].lower() == 'yes' ztime = ':'.join(d['time'].split(' ')[3].split(':')[0:2]) zmessage = d['message'] id = '%s/\n%s/\n%s\n %s' % (zclass, zinstance, zsender, ztime) if zop == 'ping': header = '%s (%s)' % (id, zsender) message = '...' elif zop == 'nil': header = '%s (%s)' % (id, zmessage[0]) message = '%s' % zmessage[1] else: return g = os.popen("growlnotify -a MacZephyr -n zephyr -d '%s' -t '%s'" % (id, header), 'w') g.write(message) g.close() def close(self): return def main(argv): if len(argv) < 2: print """barn-growl v.0.0.1 Usage: barn-growl USERNAME""" return 0 username = argv[1] principal = username if principal.find("@") == -1: principal += '@ATHENA.MIT.EDU' bash = "/bin/bash -lc \"kdo %s ssh %s@linerva.mit.edu 'tzc -si'\" 2>/dev/null