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?
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:
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 = '[email protected]'
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.
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
J'ai utilisé des informations sur cette page pour connecter xmpppy à Google Talk.
la source