SendXMPP является Perl-скриптом для отправки сообщений на XMPP (Jabber), аналогично тому, как почта делает для работы с почтой. sendxmpp используется на компьютерах во всем мире, например, для отправки сообщения на xmpp сервер для предупреждения или уведомления пользователей.
Идем в порты
//> cd /usr/ports
Ищем прогу
/usr/ports/> make search name=sendxmpp
Port: sendxmpp-0.0.8Path: /usr/ports/net-im/sendxmppInfo: Perl-script to send xmpp (jabber) messagesMaint: mek@mek.uz.uaB-deps: expat-2.0.1 p5-Authen-SASL-2.12 p5-Digest-HMAC-1.01 p5-Digest-SHA1-2.11p5-ExtUtils-CBuilder-0.24 p5-ExtUtils-ParseXS-2.19 p5-GSSAPI-0.26p5-Module-Build-0.30 p5-Net-XMPP-1.02 p5-Spiffy-0.30 p5-Test-Base-0.54_1p5-Unicode-String-2.09 p5-XML-Parser-2.36 p5-XML-Stream-1.22 p5-YAML-0.66perl-5.8.8_1R-deps: expat-2.0.1 p5-Authen-SASL-2.12 p5-Digest-HMAC-1.01 p5-Digest-SHA1-2.11p5-ExtUtils-CBuilder-0.24 p5-ExtUtils-ParseXS-2.19 p5-GSSAPI-0.26perl-5.8.8_1p5-Module-Build-0.30 p5-Net-XMPP-1.02 p5-Spiffy-0.30 p5-Test-Base-0.54_1p5-Unicode-String-2.09 p5-XML-Parser-2.36 p5-XML-Stream-1.22 p5-YAML-0.66WWW: http://www.djcbsoftware.nl/code/sendxmpp/
Переходим в директорию
//> cd /usr/ports/net-im/sendxmpp
И начинаем устанавливать
/usr/ports/net-im/sendxmpp/> make install clean
Далее попросит
+--------------------------------------------------------------------+ | Options for p5-Authen-SASL 2.12 | | +----------------------------------------------------------------+ | | | [X] KERBEROS Enable Kerberos support | | | | | | | | | | | | | | | | | | +-+------v(+)------------------------------------------------------+-+ | [ OK ] Cancel | +--------------------------------------------------------------------+
/usr/ports/net-im/sendxmpp/> rehash
Создаем файл под которым sendxmpp будет подключаться к Джаббер Серверу в моем случае это Джаббер сервер Openfire
//> ee /root/.sendxmpprc
Содержимое файла должно быть примерно такое
user@jabber.domain.ru:5222 Пароль
Даем такие права на файл
//> chmod 0600/root/.sendxmpprc
Далее правим вот этот файл закомментировав строку return $self->AuthSASL(%args); так как с ней у меня не проходила авторизация на Джаббер сервере
//> ee /usr/local/lib/perl5/site_perl/5.8.8/Net/XMPP/Protocol.pm
И комментим строку
#return $self->AuthSASL(%args);
Далее правим сам демон для того что бы сообщения могли нормально отправляться на русском языке
//> ee /usr/local/bin/sendxmpp
Правим файл добавив в него параметр use encoding 'koi8-r'; Нужен он для того что бы мы молги отправлять на сервер сообщения на Русском языке
....пропущено....use Net::XMPP;use Getopt::Long;use strict;use encoding 'koi8-r';....пропущено....
Проверить можно вот так, можно просмотреть в режиме дебага ключ -d
//> echo "Текст сообщения" | sendxmpp -d -s "Тема сообщения" cancer@jabber.domain.ru
И долны увидеть
sendxmpp: config: 'password' => 'Пароль'sendxmpp: config: 'jserver' => 'jabber.domain.ru'sendxmpp: config: 'port' => '5222'sendxmpp: config: 'username' => 'user'XML::Stream: new: hostname = (bsd.domain.local).....пропущено.....XML::Stream: Send: (</stream:stream>)XML::Stream: SetCallBacks: tag(node) func(CODE(0x86304e4))XMPP::Conn: Disconnect: bye byesendxmpp: Disconnect
Если получили сообщение от пользователя которого указали в /root/.sendxmpprc
Subject: Тема сообщенияТекст сообщения
Значит все работает нормально!!!! Вот написал скрипт для связки Squid+Sams & Havp. Если Havp найдет вирус, то мне отправит сообщение, скрипт нужно запускать каждый час (по крону), если не будет обнаружено Вируса естественно никакого сообщения не будет.
#!/bin/sh# Made by Cancer 21/03/09logfile='/var/log/havp/access.log'logfile2="/usr/home/havp.log"logfile3="/usr/home/havp2.log"time=`/bin/date -v -1H "+%d/%m/%Y %H"`subject="Был обнаружен Вирус!!!!!"message="/usr/home/message"alert="/usr/home/havp2.log"sendxmpp="/usr/local/bin/sendxmpp"cat $logfile | grep "$time" > $logfile2ifcat $logfile2 | grep "VIRUS ClamAV" > $logfile3thencat $message $alert | $sendxmpp -s "$subject" cancer@jabber.domain.rufi
Создаем файл
//> ee /usr/home/message
Вот с таким содержанием
Программой ClamAV за прошедший час был обнаружен Вирус!Ниже приводится лог что за вирус и с какого IP адреса===============================================
Вот такое сообщение вы получите в своем Джаббер клиенте
Subject: Был обнаружен Вирус!!!!!Программой ClamAV за прошедший час был обнаружен Вирус!Ниже приводится лог что за вирус и с какого IP адреса===============================================21/03/2009 19:42:37 192.168.xx.x GET 200 http://www.eicar.org/download/eicar.com375+68 VIRUS ClamAV: Eicar-Test-Signature
P.S огромное спасибо конфе freebsd@conference.jabber.ru за помощь в написании скрипта