ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

В ряде задач администрирования требуется получать сообщения по какому-либо событию. Например, в мониторинге при падении/поднятии сервера/сервиса, канала и т.п.
Получать письма на 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();

Логика скрипта проста. Коннектимся к серверу, отсылаем сообщение и дисконнект:

  1. user@jabber.ru — авторизуется на jabber.ru
  2. user (user@jabber.ru) — отсылает сообщение («My First Jabber Message From FreeBSD«) для reciver (reciver@jabber.ru)
  3. user@jabber.ru — отключается от jabber.ru

Для того, чтобы рассылать сообщение нескольким абонентам, можно создать чат-группу, тогда сообщение посланное кому-то одному, будет переслано всем остальным в группе.

Можно прикрутить русский язык, но об этом позже 🙂 если дойдут руки.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: folio

Похожие статьи:

    Не найдено

Прочитано: 16 635 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

комментариев 8

  1. Andrey сказал:

    Странно.
    Сервер в локальной сети. Скопировал скрипт, поменял под свои настройки и не работает. Уже все настройки перепробывал — никак. (((

  2. admin сказал:

    1. ты установил порт ?
    2. ты сделал скрипт исполняемым ?
    3. какое нить сообщение на экран скрипт выдает ?
    4. авторизация на jabber сервере проходит ? в простом клиенте пробовал авторизоваться ?

  3. folio сказал:

    Не странно, если ты скрипт запускаешь, когда твой аккаунт в онлайне, работать естесственно не будет. Сам подумай как скрипт прилогинится, если его аккаунт уже заюзан?

  4. lehisnoe сказал:

    Немного не в тему дискуссии, просто, чтобы не забыть: для отсылки сообщений из php (например, с сайта по некоторому событию) пользуюсь XMPPHP :

    < ? include("xmpp.php"); $conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO); $conn->connect();
    $conn->processUntil(‘session_start’);
    $conn->message(‘someguy@someserver.net’, ‘This is a test message!’);
    $conn->disconnect();

    ?>

  5. Andrey сказал:

    Порт установил, на экран ничего не выводится. Аккаунт не в онлайне, файл исполняем.

  6. Andrey сказал:

    В простом клиенте авторизоваться возможно под этим логином и паролем.
    Из принципа установил sendxmpp запускаю командой:
    echo «Hello» | /usr/local/bin/sendxmpp -u test@10.10.254.128 -p test -s testmessage admin@10.10.254.128

    и выдается сообщение:
    Error ‘AuthSend’: error: not-authorized[?]

    При попытке авторизоваться с ключом -t:
    echo «Hello» | /usr/local/bin/sendxmpp -t -u test@10.10.254.128 -p test -s testmessage admin@10.10.254.128

    Выводится сообщение:
    You requested that XML::Stream turn the socket into an SSL socket, but you don’t have the correct version of IO::Socket::SSL v0.81. at /usr/local/lib/perl5/site_perl/5.8.8/XML/Stream/Node.pm line 547

    ЗЫ. xmpphp не использую.

  7. lehisnoe сказал:

    1. оно же тебе грит, что у тебя нету корректной версии IO::Socket::SSL ( взять можно в портах: /usr/ports/security/p5-IO-Socket-SSL/ ).
    2. Лучше обсуждать неработоспособность чего-либо в форуме.

  8. admin сказал:

    Тема на форуме: http://subnets.ru/forum/viewtopic.php?f=6&t=107

Добавить комментарий

Вам следует авторизоваться для размещения комментария.