Ответы:
Если вы ведете журнал через системный журнал, 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.