Как уже было сказано, drawterm - это терминальная программа для подключения к удаленному рабочему столу, если выражаться в терминологии Windows. Существуют версии для Linux, Windows, MacOS X, Android, iOS (??). drawterm позволяет подключиться к машине, запустить на ней новую сессию rio и полноценно работать с системой. Более того, drawterm также монтирует в Plan9 корень системы, из-под которой был запущен (она будет доступна как /mnt/term на время сессии), позволяя обмениваться файлами между системами. Также drawterm взаимодействует с раскладкой клавиатуры удаленной машины - переключение раскладки в удаленно системе будет происходить привычной комбинацией клавиш и будут доступны все имеющиеся раскладки клавиатуры.
Установка
Есть старые версии программы, разработанные Рассом Коксом и новые, с исправлением багов и дополнениями новых возможностей. Для Windows рекомендуется версия с сайта 9front.org (878Kb).
В Linux он может быть найден в репозиториях. В Ubuntu/Linux Mint/Debian устанавливается командой:
apt install drawterm
Для Fedora необходимо подключить сторонний репозиторий:
dnf copr enable khm/drawterm
dnf install drawterm
man drawterm
В крайнем случае можно скачать исходники и собрать самостоятельно, следуя инструкциям для сборки.
Для Android в PlayStore drawterm не присутствует, но есть версия от cinap_lenrek:
Для установки приложений из сторонних ресурсов на устройстве необходимо включить режим разработки.
Еще подборка сборок под разные ОС, но Windows-версия там нерабочая.
Настройки на стороне Plan9
Для начала настроим порт 17019, слушающий входящие соединения:
acme lib/profile
В пользовательском профиле перед функцией switch($service) вставляем следующие строки (делаем бекапы конфигурации и следуем рекомендациям раздела Troubleshooting):
auth/factotum -g 'key proto=p9sk1 dom=vega9 user=glenda !password=<Secret>'
aux/listen1 -t tcp!*!rcpu /rc/bin/service/tcp17019 -R &
ip/ipconfig
Данным кодом в хранилище паролей создаются ключи авторизации. Затем поднимается порт 17019 для входящих соединений к сервису удаленного терминала. В последней строке инициализируется сетевой стек.
Перегружаемся и проверяем доступность по сети:
telnet 192.168.7.13 17019
При этом устанавливается подключение к консоли системы. При успешном подключении мы попадаем в нечто, выйти из которого можно лишь через killall -9 telnet
. На этой стадии можно удаленно подключиться к удаленной системе командой:
drawterm -a 192.168.7.13:17019 -h 192.168.7.13 -u glenda
После ввода пароля попадаем в консоль.
Можно настроить запуск rio с предопределенными окнами. Создаем и заполняем $home/bin/rc/riostart-remote
:
touch $home/bin/rc/riostart-remote
#!/bin/rc
window 0,0,161,117 stats -lmisc
window 161,0,278,117 clock
window 278,0,478,117 winwatch -e '^(winwatch|stats|clock|faces)'
window -scroll bar
В конце файла обязательно ставим перевод строки. Тут указывается создание окон с координатами:
- stats - мониторинг системы; clock - аналоговые часы;
- winwatch - окно со списком открытых окон за исключением указанных в параметре -e;
- bar - цифровые часы в правом нижнем углу.
Далее, снова добавим в lib/profile строки - после определения функции fn cpu% (соблюдаем отступы):
if(! webcookies >[2]/dev/null)
webcookies -f /tmp/webcookies
webfs
plumber
rio -i riostart-remote
Тут происходит настройка сессии при подключении конкретным пользователем. При удаленном подключении, в конструкции switch($service) отрабатывает case cpu и подготавливает окружение для удаленного доступа. Подключаются сервисы, необходимые для работы браузеров и пр. сетевых приложений (webcookies, webfs), сервис взаимодействия между приложениями (plumber) и затем уже стартует rio с индивидуальными настройками сессии.
Если drawterm не подключается, ссылаясь на неправильный домен - возможно надо прописать его явно в /rc/bin/termrc: sysname='vega9'
Настройки на принимающей стороне
Процесс подключения и запуск rio можно автоматизировать следующим скриптом:
#!/bin/sh
PASS=<Secret> /root/bin/drawterm -a 192.168.7.13:17019 -h 192.168.7.13 -u glenda -c rio -s -i riostart-remote &
Запускается новая сессия rio, не связанная ни с оригинальной, запущенной при старте системы, ни с другими, после повторного запуска этой команды.
В Windows переменная PASS в drawterm не отсылается, поэтому надо вводить пароль вручную. Скрипт подключения выглядит почти аналогично:
drawterm.exe -a 192.168.7.13:17019 -h 192.168.7.13 -u glenda -c rio -s -i riostart-remote &
Файл drawterm.exe следует разместить в области видимости переменной PATH либо указать полный путь.