The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Автоматическая смена кодировки в konsole
Скрипт, использующий dcop для упрощения процесса смены кодировки в konsole при подключении к ssh.

Как и всякая программа KDE, konsole использует DCOP для внутрисистемных коммуникаций. 
Это означает, что запущенной программой можно управлять из командной строки 
командами типа "dcop konsole-2115 konsole setFullScreen true". 
Здесь konsole-2115 - название программы + её pid, все остальные 
аргументы - это, говоря языком ООП, объект, методы и параметры. 
Список программ, которыми можно рулить подобным образом, и их 
объектов с методами можно получить, выполняя последовательно 
команды dcop, dcop konsole-2115, dcop konsole-2115 konsole и т.д.

Konsole при запуске устанавливает две переменные окружения:
KONSOLE_DCOP, в которой хранится ссылка на текущий экземпляр программы, и 
KONSOLE_DCOP_SESSION - ссылка на текущий сеанс. 
Для установки кодировки текущего сеанса нужно использовать такую команду:

    dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R

Собственно, на этом задачу можно считать решённой, осталось правильно оформить ответ :)

В качестве быстрого решения подойдёт прописывание в .bashrc alias'ов для всех интересующих хостов:

    alias 01='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;\
        ssh bpp@192.168.0.1 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'
    alias 02='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;\
        ssh bpp@192.168.0.2 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'
    alias 03='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;\
       ssh bpp@192.168.0.3 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'

Более правильное решение - оформить это в виде небольшого скрипта ~/bin/ssh-launcher.sh, 
который умеет переименовывать сеанс и проверять, выполняется ли команда в konsole, 
а не, например, в xterme, который dcop не поддерживает. Кроме того,
скрипт можно расширять, добавляя установку различных параметров konsole в
зависимости от хоста назначения.


    #!/bin/bash
    if !([[ "$1" ]] && [[ "$2" ]]) ; then

        echo Usage: $0 username hostname \[ ssh parameters \]
        exit 1

    fi

    ssh_params=( $* )
    ssh_user=${ssh_params[0]}
    ssh_host=${ssh_params[1]}
    unset ssh_params[0]
    unset ssh_params[1]
    ssh_parameters=${ssh_params[*]}

    if [[ x"$KONSOLE_DCOP" != "x" ]] ; then # если мы в konsole

        dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R
        dcop $KONSOLE_DCOP_SESSION renameSession $ssh_user@$ssh_host
        ssh $ssh_user@$ssh_host $ssh_parameters
        dcop $KONSOLE_DCOP_SESSION renameSession `whoami`@`hostname`
        dcop $KONSOLE_DCOP_SESSION setEncoding UTF8

    else

        kdialog -text "run this from konsole"

    fi

Теперь в ~/.bashrc можно прописать alias'ы длы вызова этого скрипта:


    alias 01='ssh-launcher bpp@192.168.0.1 $*'
    alias 02='ssh-launcher bpp@192.168.0.1 $*'
    alias 03='ssh-launcher bpp@192.168.0.1 $*'
    ...
    alias bpp='ssh-launcher bappoy@bappoy.pp.ru $*'

P.S. Обратите внимание на $* в конце alias'а - благодаря этой переменной 
можно очень быстро выполнять команды на указанном сервере:

    01 ps -ax\|grep httpd\|wc -l

Ссылки про DCOP:

KDE DIY - Building Your Own Tools
   http://docs.kde.org/userguide/kde-diy.html
Using DCOP from the command line (Linux Gazette #97)
   http://linuxgazette.mirrors.org.ua/issue97/oregan2.html
DCOP @Wikipedia
   http://en.wikipedia.org/wiki/Dcop
 
21.11.2007 , Автор: bappoy , Источник: http://bappoy.pp.ru/2007/11/21/kons...
Раздел:    Корень / Пользователю / Русификация

Обсуждение [ RSS ]
 
  • 1, bappoy, 19:16, 21/11/2007 [ответить] [смотреть все]
  • +/
    в алиасах имя пользователя надо прописывать без собаки:

    alias 01='ssh-launcher bpp 192.168.0.1 $*'

     
  • 2, Serg11, 12:21, 23/11/2007 [ответить] [смотреть все]
  • +/
    еще полезно что-то вроде
    dcop $KONSOLE_DCOP_SESSION setSchema BlackOnLightYellow.schema
    добавить. Если запустить ssh на сервере под рутом, удобно, когда другой цвет, да и привычка уже...
    Ну, это на вкус.
     
     
  • 3, bappoy, 12:06, 26/11/2007 [^] [ответить] [смотреть все]
  • +/
    это отдельный скрипт надо делать, в одну строчку не получится:

    #!/bin/bash

    dcop $KONSOLE_DCOP_SESSION setSchema BlackOnLightYellow.schema
    sudo $*
    dcop $KONSOLE_DCOP_SESSION setSchema LightPicture.schema # схема по умолчанию

     
  • 4, Antrew, 02:50, 29/11/2007 [ответить] [смотреть все]
  • +/
    Спасибо тебе, добрый человек! Теперь не надо кодировку каждый раз через меню выбирать. Я сделал еще проще, у меня настроены сеансы для каждого хоста вот такой командой:
    dcop $KONSOLE_DCOP_SESSION setEncoding utf8; ssh someone@somewhere.com
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList