Ответы:
Если вы ведете журнал через системный журнал, Metalog поддерживает выполнение команды всякий раз, когда в журнале регистрируется сообщение, соответствующее какому-либо критерию. В противном случае вы можете использовать tailf
для поиска новых строк в файле журнала.
sendxmpp - это небольшой Perl-скрипт для отправки сообщений XMPP (возможно, уже доступный в виде пакета для вашего любимого дистрибутива)
Вы можете сшить эти два вместе с помощью сценария оболочки без особых проблем. Для случая metalog создайте скрипт, подобный следующему:
#!/bin/sh
echo $* |sendxmpp your-xmpp-id@gmail.com
И добавить command = /path/to/script.sh
в соответствующий раздел metalog.conf
В случае с tailf, вы можете попробовать что-то вроде этого, запустить постоянно:
tailf /var/log/file-to-watch.log |(while true; do read M; echo $M | sendxmpp recipient@gmail.com; done)
sendxmpp нужна действительная учетная запись XMPP, обратитесь к странице руководства, чтобы узнать, как настроить учетную запись для использования.
(Исходя из моего опыта, сообщения об ошибках XMPP, как правило, становятся довольно раздражающими, если они слишком частые ...)
grep
, вам, вероятно, придется добавить --line-buffered
в заклинание сообщения, которые будут отображаться.) Я потратил целый час, пытаясь выяснить, почему сообщения казались случайными или нет вообще.
Я сделал этот маленький скрипт на Python. Вы можете использовать его в качестве отправной точки
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)
Я использовал информацию на этой странице для подключения xmpppy к Google Talk.