Antworten:
Wenn Sie über Syslog protokollieren, kann Metalog einen Befehl ausführen, wenn eine Nachricht protokolliert wird, die einem bestimmten Kriterium entspricht. Andernfalls können Sie tailf
in einer Protokolldatei nach neuen Zeilen suchen.
sendxmpp ist ein kleines Perl-Skript zum Senden von XMPP-Nachrichten (möglicherweise bereits als Paket für Ihre Lieblingsdistribution verfügbar).
Sie können diese beiden ohne allzu große Schwierigkeiten mit einem Shell-Skript zusammenfügen. Erstellen Sie für den Metalog-Fall ein Skript wie das folgende:
#!/bin/sh
echo $* |sendxmpp your-xmpp-id@gmail.com
Und fügen Sie command = /path/to/script.sh
den entsprechenden Abschnitt der metalog.conf hinzu
Für den Fall tailf könnten Sie so etwas versuchen und auf eine beständige Weise ausführen:
tailf /var/log/file-to-watch.log |(while true; do read M; echo $M | sendxmpp recipient@gmail.com; done)
sendxmpp benötigt ein gültiges XMPP-Konto. Informationen zum Konfigurieren des zu verwendenden Kontos finden Sie in der Manpage.
(Aus meiner Erfahrung werden von XMPP gelieferte Fehlermeldungen ziemlich ärgerlich, wenn sie zu häufig sind ...)
grep
, müssen Sie wahrscheinlich --line-buffered
die Beschwörung hinzufügen , damit Nachrichten angezeigt werden.) Ich habe gerade eine gute Stunde damit verbracht, herauszufinden, warum Nachrichten willkürlich oder gar nicht angezeigt wurden.
Ich habe dieses kleine Python-Skript erstellt. Sie können es als Ausgangspunkt verwenden
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)
Ich habe Informationen auf dieser Seite verwendet, um xmpppy mit Google Talk zu verbinden.