11:31 am
[Link] |
Доступ к консоли Windows из Linux
Давненько я не писал ничего о работе, вот сегодня с утра разобрался с одной хреновиной для стимулирования лени =)
Очень удобно для работы с консольными утилитами, коих конечно много
меньше, но все же они есть. Или просто для запуска отдельных программ
или команд. Теперь для того, чтобы выставить время на удаленном компе,
или еще что-то нет смысла отрывать себя от стула и работающего человека
от его работы.
- Есть проект winexe.
Один бинарник, который реализует механизм RCP. Т.е. можно удаленно
запускать все что угодно, при этом ничего не windows предварительно
устанавливать не надо. Нам необходимо установить этот пакет, взять его
можно в виде исходников, или в репозитарии
- в общем, теперь почти все уже готово, проверить можно вот так
winexe -W GEO //termserv cmd , т.е. мы коннектимся текущим пользователем к машине termserv и запускаем cmd т.е. получается такой шелл.
Минусы этого решения видны сразу. Первое -
это кодировка, cp866 в нашем линуксе в качестве локали почти не
поддерживается (что нам и говорит locale -a | grep 866 ),
второе это невозможности передавать управляющие последовательности с
клавиатуры т.е. всяческие Ctrl+C, F1..10 и пр.. И если второе не
лечиться в принципе (по заверению авторов, на данный момент они не видят
никакого решения этой проблемы), то второе удачно лечиться с помощью
рашпиля\напильника\надфиля\шкурки..
Что нам для этого понадобиться. Первое и единственное средство это luit , программа входящая в пакет xorg-x11-apps и осуществляющая потоковую конвертацию из одной кодировки в другую принцип просто luit -encoding cp1251 winexe //termserv cmd , т.е. мы запускаем luit в качестве фильтра из кодировки cp1251 в текущую, для команды winexe и пр. Все удачно работает, но luit -list , говорит нам о том, что он знает множество кодировок, кроме CP866. Печально. Будем лечить.
Что нам для этого надо :)
- скачиваем исходники
xorg-X11-apps.src.rpm
- устанавливаем его в систему
rpm -i xorg-X11-apps.src.rpm , согласно идеологии redhat, все src пакеты при установке будут разделены на исходники (в папке /usr/src/redhat/SOURCES ) и spec файл(ы) необходимые для последующей сборки (в /usr/src/redhat/SPECS ).
- идем в
/usr/src/redhat/SOURCES видим там, кроме всех прочих утилит, исходники luit-1.xxx.bz2 . Перетаскиваем в укромное местечко, распаковываем и начинаем изучать.
- видим файл
charmap.c , открываем и начинаем фиксить
- В описании массива
FontencCharsetRec fontencCharsets[] = { добавляем строку строку {"IBM866", T_128, 0, "ibm-cp866", 0x80, 0, 0}, (никакой импровизации! все имена сверены с RFC и именно так и должны называться)
- затем в описании
LocaleCharsetRec localeCharsets[] = { добавим { "ibm866", 0, 2, "ASCII", NULL, "IBM866", NULL, NULL},
- теперь собираем дерево исходников
luit , в такой же архив как и был и копируем обратно в /usr/src/redhat/SOURCES
- теперь надо создать саму локаль
cp866 . Проверяем все что нам для этого необходимо, а это - наличие файла /usr/share/i18n/charmaps/IBM866.gz , если файл есть можно создавать локаль localedef -i ru_RU -f IBM866 ru_RU.IBM866
- локаль есть, фиксы готовы. Собираем rpm -
rpmbuild -ba /usr/src/redhat/SPECS/xorg-x11-apps.spec
- в зависимости от платформы берем готовые rpm в
/usr/src/redhat/RPMS/платформа/xorg-x11-apps-x.y.z.abc.rpm
- обновляем текущую версию
rpm -U /usr/src/redhat/RPMS/платформа/xorg-x11-apps-x.y.z.abc.rpm
- проверяем.. вуаля!
|