
Чаще всего такая задача решается, например, отправкой почтового сообщения. Но нельзя гарантировать, что сообщение, во-первых, прийдет вовремя, а во-вторых, что его сразу прочтут. Тогда, подумает администратор, будем использовать IM. Но как? Держать, например, centerim постоянно открытым в screen? Согласитесь, не самый радужный вариант.
На выручку к нам спешит
Пример такого кода я и приведу.
Когда мне понадобился такой функционал, я пробежался по существующим решениям на таких популярных языках, как C, php, perl, python. Некоторые предполагали использование уже готовых классов, некоторые — подгрузку модулей. Код был чудовищно громоздким и неудобочитаемым, а я искал элегантное решение. И оно было найдено в Питоне.
Итак, условимся, что работаем в Linux. На самом деле, скрипт наверняка сможет работать и в Windows, но такой целью я не задавался. Нам понадобится, собственно, сам python, а также два модуля — любой dns и xmpppy, который представлен в Debian пакетом python-xmpp.
Код скрипта выглядит следующим образом:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import xmpp,sys
xmpp_jid = 'noreply@some.jabber.server'
xmpp_pwd = 'noreplypass'
to = sys.argv[1]
msg = sys.argv[2]
jid = xmpp.protocol.JID(xmpp_jid)
client = xmpp.Client(jid.getDomain(),debug=[])
client.connect()
client.auth(jid.getNode(),str(xmpp_pwd),resource='xmpppy')
client.send(xmpp.protocol.Message(to,msg))
client.disconnect()
Скрипт, используя переданные ему JID и пароль, авторизуется на сервере, отправляет сообщение и закрывает соединение. Проще некуда. Вам потребуется сделать отдельную учетку для скрипта (но можно и не делать, jabber разрешает множественные одновременные подключения с разным resource) и внести учетные данные в переменные xmpp_jid и xmpp_pwd.
Сохраните код в файл, сделайте его исполняемым, запускайте. Запуск выглядит следующим образом:
/home/username/scripts/send_xmpp_message username@email.server.ru "привет, это твой любимый сервер, не забудь вынуть пиво из серверного шкафа"
Полет фантазии неограничен: после легкой модификации, например, в скрипт можно будет перенаправлять данные вместо передачи аргументов, а используя crontab, отправлять сообщения по расписанию.