Risposte:
Se si sta effettuando la registrazione tramite syslog, Metalog ha il supporto per eseguire un comando ogni volta che viene registrato un messaggio che soddisfa alcuni criteri. Altrimenti, è possibile utilizzare tailf
per cercare nuove righe in un file di registro.
sendxmpp è un piccolo script perl per inviare messaggi XMPP (probabilmente già disponibile come pacchetto per la tua distribuzione preferita)
Potresti ricucire quei due insieme con uno script di shell senza troppe difficoltà. Per il caso metalog, crea uno script come questo:
#!/bin/sh
echo $* |sendxmpp your-xmpp-id@gmail.com
E aggiungere command = /path/to/script.sh
alla sezione pertinente di metalog.conf
Per il caso tailf, potresti provare qualcosa del genere, eseguire in modo persistente:
tailf /var/log/file-to-watch.log |(while true; do read M; echo $M | sendxmpp recipient@gmail.com; done)
sendxmpp necessita di un account XMPP valido, consultare la pagina man per come configurare l'account da utilizzare.
(dalla mia esperienza, i messaggi di errore forniti da XMPP tendono a diventare piuttosto fastidiosi se sono troppo frequenti ...)
grep
ing, probabilmente devi aggiungere --line-buffered
all'incantesimo affinché i messaggi vengano visualizzati.) Ho appena trascorso un'ora buona cercando di scoprire perché i messaggi sono apparsi a casaccio o per niente.
Ho realizzato quel piccolo script in pitone. Puoi usarlo come punto di partenza
import xmpp, os, time
login = 'Your.Login' # @gmail.com
pwd = 'YourPassword'
recipient = 'YourFriend@gmail.com'
logfile = "/home/myself/test.log"
def sendmsg(text):
global login, pwd, recipient
cnx = xmpp.Client('gmail.com')
cnx.connect( server=('talk.google.com',5223) )
cnx.auth(login,pwd, 'botty')
cnx.send( xmpp.Message( recipient , text ) )
oldsize = newsize = os.path.getsize(logfile)
while True:
newsize = os.path.getsize(logfile)
if newsize != oldsize:
f = open(logfile)
f.seek(oldsize, os.SEEK_SET)
s = f.read()
if s[-1] == '\n':
sendmsg(s)
oldsize = f.tell()
f.close()
time.sleep(10)
Ho usato le informazioni su quella pagina per connettere xmpppy a Google Talk.