SendXMPP
- это Perl-скрипт для отправки сообщений на XMPP (Jabber) сервер.
Работает почти так же, как программа mail при отправке почты. SendXMPP
можно использовать для отправки сообщения на xmpp сервер для
предупреждения или уведомления пользователей.
Итак, для начала нам нужно поставить SendXMPP. Для Debian/Ubuntu это можно сделать так:
sudo aptitude install sendxmpp
Готово. Теперь надо настроить SendXMPP, чтобы он знал на какой
сервер под каким логином и паролем ему коннектиться. Для этого нужно
создать файл ~/.sendxmpprc и записать в него настройки:
vim ~/.sendxmpprc servername@jabber.domain.ru:5222 PaSSwD
Тут servername@jabber.domain.ruservername@jabber.domain.ru:5222 - логин, сервер и порт, PaSSwD - пароль.
Теперь нужно выставить на него такие права, чтобы этот файл мог читать
только тот юзер, от имени которого будет зпапускаться SendXMPP:
Все, готово. Установка и настройка закончены.
Теперь пара примеров по использованию SendXMPP.
Пример 1:
Задача: Узнать когда процессор сервера будет под большой нагрузкой.
Решение: Запихнуть в кронтаб вот этот однострочник, чтобы каждые 5 сек. выполнялся:
if [[ $(ps aux | awk '{print $3}' | sort -nr | head -n 1 | sed 's/\..*//g' ) -ge 70 ]] ;\ then ps aux | awk '$3>70' | sendxmpp -s 'CPU Load > 70%' admin@jabber.domain.ru ; \ fi
НО(!) имей ввиду, что это просто пример, в реальной жизни такой
однострочник не стоит использовать, т.к. если какой-либо процесс
загрузит проц, то тебе будут постоянно идти сообщения, что не есть гуд.
В реальной жизни надо сделать провеку, т.е. типа если уже отправлено
сообщение, то "поднимаем флаг" и больше не отправляем, когда нагрузка
спала, "опускаем флаг".
Пример 2:
Задача: Нужно отслеживать все подключения к SSH-серверу.
Решение: Создать файл /etc/ssh/sshrc с содержанием:
echo "Date:\t\t$(date +%d.%m.%Y\ %H:%M:%S)\nRemote Host:\t$SSH_CONNECTION\nUser:\t\t$USER\nShell:\t\t$SSH_TTY" |\ sendxmpp -s 'SSH Login on GLPI Server' -r 'GLPI Server' -u UserName -j jabber.domain.ru:5222 -p 'PaSSwD' admin@jabber.domain.ru
Теперь при любом подключении будет приходить сообщение в jabber с
указанием даты, времени, ip подключившегося, имя этого юзера и на какой
шелл он повесился.
Пояснения ключей:
-s - тема сообщения (у меня русские буквы не отображает, в теле все хорошо)
-r - ресурс
-u - имя юзера, для логина на jabber-сервер
-j - адрес jabber-сервера и его порт
-p - пароль
ЗЫЖ: Если у кого бедет проблема с русской кодировкой попробуйте открыть файл sendxmpp, найти строки
use Net::XMPP; use Getopt::Long; use strict;
и сразу после них добавить строку
или
Возможно поможет. Я не пробовал, т.к. у меня с русскими в Gajim'е все хорошо, кроме темы сообщения, а тут они мне и не нужны.
|