В ряде задач администрирования требуется получать сообщения по какому-либо событию. Например, в мониторинге при падении/поднятии сервера/сервиса, канала и т.п.
Получать письма на e-mail неактуально, т.к. по себе знаю, хоть почта и проверяется раз в 5 минут, но заглядываю туда гораздо реже. Хотелось бы получить, чтото вроде всплывающих сообщений на экран/мобильник, тогда они точно не останутся без внимания, а также, чтоб эти сообщения приходили без задержки (ну или с минимальной задержкой). Таким условиям удовлетворяют 2 способа доставки сообщений:
Способ 1.
SMS и GSM-модем. Плюсы: сообщение получишь, даже если сидишь в сортире)). Недостатки: покупка/выбор мопеда. Не каждый мопед поедет под FreeBSD. Стоимость от 100 вечнозеленых буказоидов, да и за сами смс-ки придется платить. Тут уж как никак а раскошелиться придется.
Способ 2.
Сервис ICQ и ему подобные. Плюсы: минимум затрат, а в случае подключения мобильника — получаешь плюсы от первого способа. Недостатки: для получения смс на мобилу — нужна соответствующая мобила, которая это поддерживает.
Второй способ более привлекательный, как менее затратный. Самый простой в использовании протокол, как оказалось Jabber, вот его то мы и заюзаем.
Практика:
Первое, что необходимо сделать это создать аккаунт в джабере. В моем примере аккаунт регистрируем на jabber.ru
Второе:
Собираем порт /usr/ports/net-im/p5-Net-XMPP
cd /usr/ports/net-im/p5-Net-XMPP
make install clean
Существуют и другие порты для jabber, но будем использовать этот.
Третье:
Собственно сам крипт, отсылающий сообщение:
#! /usr/bin/perl
use Net::XMPP;
my $con=new Net::XMPP::Client();
$con->Connect(hostname=>"jabber.ru");
$con->AuthSend(username=>"user",
password=>"password",
resource=>"ALARM!");
my $msg=new Net::XMPP::Message();
$msg->SetMessage(to=>"reciver\@jabber.ru",
from=>"user\@jabber.ru",
body=>"My First Jabber Message From FreeBSD");
$con->Send($msg);
$con->Disconnect();
Логика скрипта проста. Коннектимся к серверу, отсылаем сообщение и дисконнект:
- user@jabber.ru — авторизуется на jabber.ru
- user (user@jabber.ru) — отсылает сообщение («My First Jabber Message From FreeBSD«) для reciver (reciver@jabber.ru)
- user@jabber.ru — отключается от jabber.ru
Для того, чтобы рассылать сообщение нескольким абонентам, можно создать чат-группу, тогда сообщение посланное кому-то одному, будет переслано всем остальным в группе.
Можно прикрутить русский язык, но об этом позже 🙂 если дойдут руки.
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !