Видео смотреть бесплатно

Смотреть ева элфи видео

Официальный сайт pharma-24 24/7/365

Смотреть видео бесплатно

masai 27.07.2009 22:15

Жизнь в консолиУправляем Gajim из командной строки

Gajim — это популярный и активно развивающийся Jabber-клиент, написанный на Python. К слову, он обладает очень неплохой поддержкой всевозможных вкусностей и полезностей Jabber по сравнению со многими другими клиентами. Одной из таких полезностей является возможность управления им из командной строки при помощи D-Bus — системы межпроцессного взаимодействия.



Управление из командной строки не означает, что Gajim имеет консольный интерфейс. Он по-прежнему будет располагаться на рабочем столе в виде окошка. Просто из консоли можно будет отправлять ему какие-либо команды. Собственно, команд поддерживается немного, но для каких-то простейших действий должно хватить.



В состав пакета с Gajim входит консольная утилитка gajim-remote, которая как раз и предназначена для отправки команд основной программе. Если вызвать её без параметров, она покажет список поддерживаемых действий. Вот наиболее интересные:


check_gajim_running — проверить, запущен ли Gajim (результат — True или False),list_accounts — список учётных записей,list_contacts <�учётные записи> — список контактов в учётных записях,contact_info — информация о пользователе с указанным JID,account_info <учётная запись> — показать информацию об одной из учётных записей Gajim,add_contact <�учётные записи> — добавить контакт в ростер,remove_contact <�учётные записи> — удалить учётную запись из ростера,change_status <статус> <�сообщение> <�учётные записи> — изменить статус с возможностью указания сообщения и учётной записи (если не указать — будет изменен статус всех учётных записей),get_status <�учётные записи> — получить статус указанных учётных записей,get_status_message <�учётные записи> — получить сообщение статуса указанных учётных записей,get_unread_msgs_number — количество непрочитанных сообщений,handle_uri <�учётные записи> — обработать ссылку вида «xmpp://»,join_room <комната> <�ник> <�пароль:> <�учётные записи> — присоединиться к конференции,send_chat_message <сообщение> <�учётные записи> — отправить сообщение в чат,send_file <файл> <�учётные записи> — отправить файл,send_groupchat_message <сообщение> <�учётные записи> — отправить сообщение в конференцию,send_single_message <тема> <сообщение> <�учётные записи> — отправить одиночное сообщение,open_chat <�учётные записи> — открыть чат с указанным контактом,start_chat <учётные записи> — открыть чат для заданной учётной записи (появится окно ввода JID),toggle_roster_appearance — показать/скрыть окошко ростера.



Попробуем теперь применить это на практике. Напишем скрипт, меняющий сообщение статуса на случайную цитату из fortunes. (Для тех, кто ещё не знает, fortunes — это консольная программа, выдающая случайную цитату из довольно объемной базы.)



Для этого в бесконечном цикле будем вызывать gajim-remote, передавая ему при помощи обратных кавычек результат выполнения команды fortunes. Между вызовами поставим паузу 5 минут (5?60=300 с).



1
while true; do gajim-remote change_status "online" "`fortune`"; sleep 300; done



У этой команды есть небольшой недостаток — нужно всё время держать терминал открытым. Для того, чтобы решить эту проблему, можно просто записать команду в текстовый файл, а потом запустить следующим образом:



1
bash changestatus.sh &



Амперсанд в конце запустит выполнение скрипта в фоне. Можно также создать правило для cron — тогда вообще не придется что-либо запускать.



Другое возможное применение — отправка кому-то сообщения по расписанию. Например, при помощи такой команды:



1
echo "gajim-remote send_chat_message [email protected] 'Hello'" | at 10:00



Ровно в 10:00 пользователю будет отправлено сообщение «Hello» (если, конечно, Gajim будет в этот момент запущен).



Итак, даже этот небольшой набор команд в сочетании с инструментами командной строки позволяет сделать что-то полезное.



Если работа gajim-remote покажется слишком медленной, можно воспользоваться, например, командой dbus-send или qdbus для отправки сообщения напрямую через D-Bus.



Список предоставляемых функций можно посмотреть при помощи команды



1
qdbus org.gajim.dbus /org/gajim/dbus/RemoteObject



Вызвать же функцию можно так:



1
qdbus org.gajim.dbus /org/gajim/dbus/RemoteObject toggle_roster_appearance



Работает намного быстрее gajim-remote, но приходится явно указывать, кому мы шлём команды.

Кросспост


Тэги: D-Bus Gajim gajim-remote
+ 5 -
Похожие Поделиться

drujebober 28.07.2009 01:28 #
+ 0 -
а вот за наводку на dbus спасибо
masai 28.07.2009 01:29 #
+ 0 -
А что именно заинтересовало?
drujebober 28.07.2009 01:33 #
+ 0 -
заитересовала именно работа через дбас, я тут просто скриптик пишу, и уж очень мне не нравится gajim-remote, теперь буду курить дбас, если есть вменяемый мануал желтельно на ru по дбас+питон буду благодарен
masai 28.07.2009 01:35 #
+ 0 -
А, ясно. Ну, если что-то интересное по D-Bus найду, обязательно выложу. ;)
evgenyl 28.07.2009 08:26 #
+ 0 -
А что имеено в нем не понятно ?

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн