Очень удобно в таких случаях работать одновременно на одной консоли. Казалось бы - достаточно расшарить экран хотя бы по тому же скайпу. Но как быть, если учителю нужно набрать пару команд и показать результат и действия? Пользоваться платными сервисами для создания вебконференций? "Шурик, это же не наш метод!" (с) :) Все гораздо проще.
Есть великолепная программка screen. Одной из ее возможностей и есть то, что нам нужно.
Сначала ученик создает сессию screen:
$ screen -S mysession
Полезный ключик -S позволяет именовать сессию, чтобы потом судорожно не вычислять, а с какой сессией screen из десятка запущенных на сервере нам нужно работать
Далее учитель подключается к сессии:
$ screen -x mysession
Все, имеем готовую "консоль на двоих". Оба оператора консоли могут видеть содержимое и работать с консолью.
Но не все так безоблачно. Ведь не может же ОС допустить, чтобы кто ни попадя мог так просто вломиться в чужую консоль. Поэтому важным условием должно быть - запуск screen от имени одного пользователя: как учеником так и учителем!
Казалось бы - в чем проблема? Учитель, используя команду sudo, переключается на нужного пользователя и подключается к нужной сессии. А проблема в ssh, который в 99% случаев будет использован (как правило, "коллективные сеансы" screen проводятся на некоем третьем компьютере, удаленном сервере). Владелец псевдотерминала, созданного ssh, при sudo не меняется (что, разумеется, абсолютно правильно и логично) и screen не может к нему приаттачиться!, выдавая сообщение вида:
$ screen -x testsession
Cannot open your terminal '/dev/pts/14' - please check.
Менять права по умолчанию для псевдотерминала? Это все равно, что отдать "ключи от квартиры, где деньги лежат" (с) - т.е. добровольно снизить безопасность системы до неприемлемого уровня.
Но есть некий обход, "dirtyhack". Нужно воспользоваться командой script, которая предназначена, вообще-то несколько для других целей, но нам сгодится :)
$ script /dev/null
$ screen -x mysession
Вот теперь подключение проходит "на ура"!
PS. Не забываем, что script прекращает работу по Ctrl-D ;)
Немає коментарів:
Дописати коментар