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



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



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



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



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



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



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



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



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 в браузер и видят мою расшаренную консоль.



Все что я ввожу и запускаю в своей консоли, отображается у стажеров в браузере.



Ключ --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 в телеграф, глянуть можешь тут.



🔵 сайт проекта

🐱 репозиторий на github



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



- Instant terminal sharing

- VSCode Live Share



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



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



tags:
#linux #utils



💩 @bashdays