Видео ролики бесплатно онлайн

Смотреть фильмы бесплатно

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

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

27.07.09 22:15 masai

Жизнь в консолиУправляем 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 <сообщение> [PGP-ключ] [учётные записи] — отправить сообщение в чат,
  • send_file <файл> [учётные записи] — отправить файл,
  • send_groupchat_message <сообщение> [учётные записи] — отправить сообщение в конференцию,
  • send_single_message <тема> <сообщение> [PGP-ключ] [учётные записи] — отправить одиночное сообщение,
  • open_chat [учётные записи] — открыть чат с указанным контактом,
  • start_chat <учётные записи> — открыть чат для заданной учётной записи (появится окно ввода JID),
  • toggle_roster_appearance — показать/скрыть окошко ростера.




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



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



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


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



bash changestatus.sh &


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



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



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


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



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



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



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



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


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



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


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

Кросспост



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

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 149)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2971 из 222 городов)
            Топ пользователей Топ блогов
            welinux.ru

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

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


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

            Online video HD

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

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

            Full HD video online

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

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

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