The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Автоматическая смена кодировки в konsole"
Отправлено auto_tips, 21-Ноя-07 19:16 
Скрипт, использующий 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


URL: http://bappoy.pp.ru/2007/11/21/konsole-encodings/
Обсуждается: https://www.opennet.ru/tips/info/1506.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру