Использование mcabber через ssh на удаленном сервере с уведомлениями

    В этой статье я расскажу, как можно держать постоянно запущенным jabber-клиент mcabber на удаленном сервере и пользоваться им подключаясь к серверу по ssh. Также здесь будет описано, как можно реализовать уведомления о пришедших сообщениях.
    Профиты от такой схемы следующие:
    • вы постоянно on-line
    • если вдруг рвется соединение не приходится перелогиниваться и терять (при неудачном раскладе) оффлайновые сообщения
    • логи хранятся в одном месте и доступны отовсюду где есть интернет
    • вы можете пользоваться mcabber с любого устройства, поддерживающего ssh, будь то мобила или веб-клиент
    • говорят, что ssh кушает меньше трафика, чем xmpp (не проверял)

    К недостаткам же можно отнести:
    • необходимость сервера
    • тормознутость интерфейса (на медленных каналах)
    • необходимость использования консольного клиента(для кого-то это даже плюс)

    Запустить и использовать mcabber на удаленном сервере не составляет труда. Впринципе, почти никакой разницы по сравнению с настройкой локально нет.
    Для экспериментов можно воспользоваться сервисом blinkenshell.org, предоставляющим бесплатные shell-аккаунты за то, что вы сидите на их irc канале. Однако чтобы стать там полноправным юзером надо потратить пару дней, да и отклик сервера у них не самый лучший. Статья написана на примере настройки для сервера blinkenshell, но вы можете легко применить ее для своего собственного.
    Для запуска mcabber на сервере можно использовать следующую команду:

    tmux new-session -d -s mcabber mcabber

    (tmux — это аналог screen, на мой субъективный взгляд он лучше)
    На локальном компьютере тогда будет достаточно выполнить в терминале:

    ssh -t blinkenshell 'LANG=ru_RU.UTF-8 tmux attach -d -t mcabber'

    где -d обозначает, что любая другая mcabber-сессия tmux должна быть сначала детачнута. Таким образом достигается то, что mcabber будет подключен только с одного компьютера. blinkenshell — алиас, настроенный в ~/.ssh/config.

    Если вы следовали этому руководству, то в конфиге awesome можно прописать:

    awful.key({ modkey }, "grave", function () scratch.drop("urxvtc -e ssh -t blinkenshell 'LANG=ru_RU.UTF-8 tmux attach -d -t mcabber'", bottom, center, 0.98, 0.95) end),

    и тем самым свести запуск jabber клиента на компьютере к комбинации клавиш Win+`, после чего откроется терминал с ssh-сессией в которой уже будет запущен mcabber.

    Интереснее становится, когда мы захотим уведомления о событиях на удаленном mcabber.
    В mcabberrc на сервере пропишите следующие строки:

    set events_command = ~/.mcabber/event.sh

    Содержимое же ~/.mcabber/event.sh небольшое:

    #!/bin/sh
    echo $@ >> logfile


    Этим мы создаем logfile на сервере, в который будут дописываться все события mcabber.

    Для уведомлений я использовал скрипт на python, написанный разработчиком mcabber. В комплекте идет вполне понятный конфигурационный файл и readme. Скрипт и конфигурационный файл следует положить в директорию ~/.mcabber/ на локальном компьютере.
    Затем там же создаем скрипт remote_events.sh следующего содержания:

    #!/bin/zsh
    SERVER=blinkenshell
    EVSCRIPT=~/.mcabber/mcevent.py
    CONFFILE=~/.mcabber/mcevent.cfg
    ssh $SERVER 'tail -n0 -F ~/.mcabber/logfile' < /dev/null | $EVSCRIPT -c $CONFFILE &|


    Он подключается по ssh к удаленному серверу и считывает содержимое ~/.mcabber/logfile. При запуске скрипт отреагирует только на последнее событие mcabber (ключ -n0). А далее будет постоянно мониторить изменения в этом файле (ключ -F) и передавать новые события скрипту уведомлений.

    Вот и все. Теперь вы сможете загрузив компьютер просто запустить remote_events.sh, подключиться по ssh к серверу на котором вас ждет mcabber и работать с ним как если бы он был запущен локально.

    P.S. с удовольствием выслушаю предложения по оптимизации данной схемы.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 14

      +4
      Я как-то пытался пользоваться такой схемой, но быстро отказался, т.к. оказалось неудобно. Jabber позволяет одновременно подключаться с нескольких клиентов, выставляя им приоритет, поэтому в классической схеме нет проблем. Про консольный клиент молчу.

      Второй вариант, который я пытался использовать — собственный jabber-сервер. Всем хороший вариант, но появляется необходимость в полноценном севере с хорошим каналом (как минимум VPS у надежного провайдера). Тоже отказался со временем.

      Последняя итерация — GTalk на своем домене через Google Apps. Из недостатков — неполный профиль и проблемы со сторонними транспортами (возможно, уже допилили — не пользуюсь, потому не знаю). Плюсы: тесная интеграция с почтой (история находится там же, есть отличный поиск), надежность, собственный домен, приличный веб-клиент (находящийся в той же почте).

      Пока для меня выбор очевиден.
        +1
        Да. Jabber позволяет одновременно подключаться с нескольких клиентов. Только могут возникнуть проблемы, если вы сидите еще и в jabber-конференциях(или не дай Б-г в irc-комнатах через транспорт), которые сохранены именно в вашем аккаунте, а не в клиенте. Тогда при подключении с другого клиента он будет пытаться зайти в те конференции под тем же ником.

        VPS для меня непозволительная роскошь.

        С недоверием отношусь ко всему гугловскому. Хотя раньше находил третий вариант отличным.
          +1
          А я лично от гугловского jabber не в восторге. Зря они адресную книгу объединили с ростером. Больше на яндексе понравилось.
        +1
        я раньше тоже пользовался ssh на домашний сервер и finch в качестве консольного клиента.
        Но как оказалось гораздо удобнее делать rsync профиля на локальную машину, логинится с нее (я выбрал для этого pidgin), а обновлять профиль на сервере или в конце сеанся или переодически по cron.

        причём для вящей безопасности на локальной машине папка профиля примонтированна на tmpfs.
        И firefox тоже по данной схеме отлично работает.

          –3
          >> вы постоянно on-line
          в чем плюс?
          >> если вдруг рвется соединение не приходится перелогиниваться и терять(при неудачном раскладе) оффлайновые сообщения
          это когда так происходит? у меня не было прецедентов
          >> логи хранятся в одном месте и доступны отовсюду где есть интернет
          удобней dropbox и аналоги коих масса? разве нет?
          >> вы можете пользоваться mcabber с любого устройства, поддерживающего ssh, будь то мобила или веб-клиент
          т.е. других клиенты не допустимы нужен именно он? почему?
          >> говорят, что ssh кушает меньше трафика, чем xmpp(не проверял)
          это о каких объемах речь?
            +1
            Плюс в том, что вы не тратите время на подключение-отключение, висите постоянно в комнатах, а значит сможете перечитать логи, что нагенерили пока вы спали. И даже ваши друзья смогут проще находить вас в своем ростере, когда вы эвэй, а не оффлайн.
            Я сейчас как раз и использую dropbox для синхронизации истории на двух компах. Мне это неудобно тем, что dropbox можно забыть запустить, или даже если он в автозапуске, то иногда приходится его выключать, т.к. он создает блокировки файлов в некоторых случаях — что рано или поздно приведет к появлению конфликтных копий файлов. Плюс это все-таки сторонний бесплатный сервис и за безопасность ваших данных отвечают посторонние люди.
            0
            Мне понравилась идея. Спасибо за пример реализации, обязательно попробую себе завести. Да и про tmux не знал. Однозначно + ;)
              0
              Dropbox как бэ намекает…
              Раньше пользовался квипом — но проблема стала остро в конвертировании хистори.
              Сижу на пиджине — доволен, что слон.
              Есть все же недочеты некоторые — но не об этом сейчас.

              Реализация — dropbox +pidgin + simlink = profit.
              Что имеем — кроссплатформенное ПО — которое будет работать под разными системами.
              Единую хистори. Читабельную хистори.

              Да. Есть вопросы — защищенность данных;
              Наличие админ прав на системах виндовс;
              Каждый раз делать симлинки.

              Дропбокс и паранойя — несовместимы.
              Админ права обходятся потрейбл версиями по. Правда для дб понадобится.нет фреймворк 3,5 — т.е. на системах хп с сп1 запустить не получится.
              Симлинки можно запихнуть в батники или шел скрипты — в зависимости от платформы и залить на тот же дропбокс.

              И фаерфокс по такой же схеме тоже отлично работает — со всеми настройками профиля.

                0
                mcabber мой основной клиент уже несколько лет. Как только появится сервачок с белым IP — обязательно попробую данную схему. Автору отдельно спасибо за мотивацию изучить tmux :)
                  +1
                  А ещё есть страшный набор костылей для screen, который делает его tmux'ом — byobu.
                    +1
                    Не делает. screen не умеет 256 цветов, а tmux умеет.
                    0
                    Все перечисленные плюсы достижимы просто при использовании gtalk (или других сервисов, прозрачно представляющих серверную историю). Тем более, что оно хранится в облаке и фатальные стечения обстоятельств на сервере не приведут к потере данных.
                      0
                      В irssi есть плагин для джаббера, а еще есть модуль proxy превращающий ее в bnc, так можно сидеть одновременно в джабер-конференциях и irc через irc-клиент
                        0
                        По-моему BNC-подобный вариант был бы гораздо удобнее. Во всяком случае в отношении IRC мне больше нравится — подключиться можно своим любимым клиентом на данной платформе и иметь практически тот же самый профит.

                        А под скрином в ssh вообще что угодно консольное можно держать, тут никаких америк статья не открывает.

                        Only users with full accounts can post comments. Log in, please.