Вчера, оказывается, столько праздников было, уууу. И день журавля, и день парикмахера, и день пирога, и день программиста. Но вместо того чтобы весело пить пиво и есть шарлотку, я, как обычно, занимался какой-то «очень полезной» шляпой.

Когда тебе навязывают зелёных стажёров, так или иначе сталкиваешься с шарингом своего экрана. Чтобы наглядно показывать будущему поколению крючочки и закорючки. Визуально информация усваивается гораздо лучше.

Раньше я просто шарил экран в гугл-мите, но всё это дело было очень прожорливым для моего ноута. Расшариваю я в основном консольку, показываю ребятам, какие команды ввожу, что и как запускаю.

И пришёл я однажды к прозрению — из лука весом в тысячу кан не стреляют по мышам. Зачем мне какой-то всратый гугл-мит? Есть же прекрасная утилита, которая называется tty-share.

Кан — японская единица измерения массы, равная 10 хиакумэ. Не знаю, зачем тебе эта информация, просто живи теперь с ней.

tty-share — простейший инструмент, который используется для предоставления общего доступа к терминалу Linux/OSX через интернет. Написан на Go и, само собой, кроссплатформенный, без зависимостей. Можно даже на малине (Raspberry Pi) эту чертяку запускать.

Как это работает

Идём в терминал и устанавливаем apt/brew install tty-share либо затаскиваем бинарник с GitHub.

После установки вбиваем и запускаем:

tty-share --public --readonly

Получаем такое:

public session: https://on.tty-share.com/mbeD30O8tEoWr4_4/
local session: http://localhost:8000/s/local/
Press Enter to continue!

Жмём Enter и погнали! Первая строчка public session, она мне и нужна. Копирую URL и отдаю стажёрам, они вбивают этот URL в браузер и видят мою расшаренную консоль.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Всё, что я ввожу и запускаю в своей консоли, отображается у стажёров в браузере.

Ключ --readonly делает так, чтобы «прямые руки» моих подопечных не могли вмешиваться в процесс просвещения. Да, если этот ключ не указать, то стажёры смогут через свой браузер вбивать команды в мою консоль.

По-моему, это офигительно! Работает за любым NAT. Также есть и локальная сессия (local session): если вы находитесь в одной подсети, можно не указывать ключ --public и довольствоваться локалкой.

У tty-share есть масса других возможностей: можно менять порты, пускать через проксю, указывать оболочку (bash/zsh/etc), писать логи и многое другое. Загляни в хелп (--help), если интересно.

Мне достаточно двух — public и readonly, остальное нафиг, работает и хорошо. По безопасности там TLS и HTTPS, но разработчик обещает добавить сквозное шифрование, пароли и ключи. Подробнее можешь почитать в разделе docs на странице проекта.

А как завершать сессию?

Короткий ответ
А хуй его знает.

В доке есть упоминание про ключ --detach-keys, но из коробки Ctrl+O и Ctrl+C не работают, либо я совсем буратино. Поэтому, когда мне нужно убить public session, я просто сделал себе alias на такую команду:

kill $(ps aux | grep 'tty-share' | awk '{print $2}')

Если разберёшься, как нативно прикончить сессию, пиши в комменты, скину тебе картинку с котиком.

Залил гифки работы tty-share в Telegraph, глянуть можешь тут.

Альтернативы:

Пользуйся на здоровье. Хорошего тебе дня, увидимся!

UPD: наш коллега Egor нашёл способ завершить сессию: просто вводишь exit — и вуаля! Спасибо, Egor!