Réponses:
Si vous vous connectez via syslog, Metalog prend en charge l'exécution d'une commande chaque fois qu'un message correspondant à un critère est enregistré. Sinon, vous pouvez utiliser tailf
pour rechercher de nouvelles lignes dans un fichier journal.
sendxmpp est un petit script perl pour envoyer des messages XMPP (éventuellement déjà disponible sous forme de package pour votre distribution préférée)
Vous pouvez assembler ces deux éléments avec un script shell sans trop de difficulté. Pour le boîtier metalog, créez un script comme celui-ci:
#!/bin/sh
echo $* |sendxmpp your-xmpp-id@gmail.com
Et ajoutez command = /path/to/script.sh
à la section appropriée de metalog.conf
Pour le cas tailf, vous pouvez essayer quelque chose comme ceci, exécuté de manière persistante:
tailf /var/log/file-to-watch.log |(while true; do read M; echo $M | sendxmpp recipient@gmail.com; done)
sendxmpp a besoin d'un compte XMPP valide, consultez la page de manuel pour savoir comment configurer le compte à utiliser.
(d'après mon expérience, les messages d'erreur fournis par XMPP ont tendance à devenir assez ennuyeux s'ils sont trop fréquents ...)
grep
ing, vous devez probablement ajouter --line-buffered
à l'incantation pour que les messages apparaissent.) Je viens de passer une bonne heure à essayer de comprendre pourquoi les messages sont apparus au hasard ou pas du tout.
J'ai fait ce petit script python. Vous pouvez l'utiliser comme point de départ
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)
J'ai utilisé des informations sur cette page pour connecter xmpppy à Google Talk.