Le serveur de queue se connecte à XMPP?


8

J'ai donc deux fichiers, et si une nouvelle ligne apparaît sur l'un de ces fichiers, j'aimerais recevoir un message instantané (de préférence jabber ou gTalk) contenant le contenu de cette ligne. Avez-vous des suggestions pour un démon Linux ou quelque chose qui pourrait le faire?

Réponses:


14

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 tailfpour 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 ...)


Hilarant. Je viens de trouver sendxmpp et j'ai installé quelque chose comme ça. Je n'avais pas entendu parler de tailf cependant, merci.
icco

Note latérale: En cas de problème, vérifiez le comportement de mise en mémoire tampon de votre pipe! (Si vous êtes greping, 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.
personne

2

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.


Cela nécessite-t-il des dépendances Python ou XMPP est-il inclus avec Base?
Tom

1
Vous devez l'installer à partir de xmpppy.sourceforge.net
Alex Jasmin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.