masai 01.11.2009 17:11
Tips & tricks — Отправка jabber-сообщений из командной строки
О том, как отправить jabber-сообщение из консоли при помощи клиента Gajim, я уже писал ранее. Тем не менее, использование gajim-remote имеет ряд недостатков: нужно установить сам Gajim и запустить его. Это может вызвать некоторые затруднения, например, на сервере, где вовсе может не быть графического интерфейса. Однако, проблема имеет и более простое решение.Сделаем скрипт, которому бы в качестве параметров передавались данные учётной записи jabber, JID отправителя и текст сообщения. В качестве основы возьмём питоновскую библиотеку xmpppy. В частности, рассмотрим повнимательнее один из примеров, входящих в её комплект, который (сюрприз!) как раз и предназначен для отправки сообщений из консоли. Остаётся только его чуть-чуть «допилить» по вкусу.
Итак, нам потребуется библиотека. Они есть в репозиториях Debian (да и других популярных дистрибутивов), поэтому устанавливаем как обычно:
1 |
|
Без python-dnspython работать тоже будет, кстати. Но лучше поставить, так как в этом случае придётся вводить точное имя узла, на котором располагается сервер.
А вот и сам скрипт:
1 |
#!/usr/bin/python
|
Скрипт довольно простой, так что разбирать его работу не буду.
Всё это сохраняем в каталог «~/bin» под именем, например, «jsend». Имя и каталог значения не имеют, просто «~/bin» удобен для хранения пользовательских скриптов, так как он входит в переменную PATH и для запуска скритов из него достаточно указать их имена. В любом случае нужно разрешить выполнение нашей программки:
1 |
|
Рассмотрим её работу. После первого запуска утилита создаёт в домашнем каталоге файл с JID и паролем отправителя. Это удобнее, чем вводить пароль в качестве параметра командной строки, так как в этом случае никто не сможет его подсмотреть. Да и доступ к файлу можно будет закрыть. Файл поличит имя, совпадающее с именем скрипта, но с точкой впереди, чтобы не отображаться лишний раз в списке файлов. В моём случае имя будет «~/.jsend». Естественно, файл после первого запуска нужно будет открыть и впесать свои JID и пароль.
Формат запуска скрипта:
1 |
|
JID — это идентификатор получателя сообщения, а text — это собственно текст, который нужно отправить.
Если текста много или нужно отправить вывод какой-либо команды, то вместо text можно поставить «-». Например, команда
1 |
df | jsend [email protected] -
|
отправит информацию о заполненности разделов на дисках пользователю [email protected].
Также можно настроить отправку сообщений в определённое время при помощи команды at, что тоже иногда оказывается удобным.
Кросспост
DEViANCE 01.11.2009 17:46 #
+ 1 -
Интересно. Спасибо, пригодится ;)
Отправка jabber-сообщений из командной строки
спасибо за а если серъезно то мну метает о хмпп либе на баше или хотя бы о парсилке хмл, а то самому так лениво...
Интересно. Как раз то, что нужно для ботов.
А как насчет D-Bus/XML-RPC вместо gajim-remote?
А как насчет D-Bus/XML-RPC вместо gajim-remote?
Ещё отлично с командной строки можно отправить сообщение через centerim, бывший centericq.
Отлично слать сообщения (и не только) из командной строки можно с помощью hatexmpp.