Шарим (в) консоль

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

Как показать детям те прелести, которые происходят в консоли?

Самое неприятное — это когда возникает необходимость показать какую-то ссылку на экране. После завершения операции в консоли отобразилась ссылка, или ключ, который надо расшарить с командой. Естественно, приходится выделать, копировать и «дублировать в чатик». Особенно это неудобно, когда в чатик надо продублировать то, что выплюнула тебе какая-нибудь команда терминала. Строки, конечно же, заботливо съедут, форматирование потеряется, а цвета поблёкнут.

О безопасности замолвите слово…

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

▍ Шарим консоль

Решением этих проблем и занимается seashells.io

Вместо того чтобы париться с тем, чтобы правильно вывести терминал на экран как видео, вы просто можете стримить терминал прямо на сайт. Причём для этого даже не нужно устанавливать никаких клиентов. Старый добрый nc работает как нельзя лучше.

Итак, давайте попробуем:

echo "Привет, Хабр!" | nc seashells.io 1337

В ответ мы получим ссылку, пройдя по которой мы увидим следующее:

Весь терминал — в народ!

Вывод команды полностью дублируется в текстовый терминал, доступный на сайте. Этот терминал доступен всем, у кого есть ссылка.

Но, давайте поговорим о чём-то более насущном и профессиональном. Выводить строки на экран может каждый. Как насчёт чего-то более серьёзного.

Делаем

htop | nc seashells.io 1337

В итоге получаем…

Цвета, живность и тому подобные свистопляски

Прямо в браузере у всех заинтересованных. Как вы видите, кодировки, цвета и обновления поддерживаются прямо там, из коробки.

Плюс все зрители конференции смогут насладиться возможностью копировать строки прямо из браузера.

Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]

Дополнительные моменты заключаются в следующем:

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

apt-get updage 2>&1 | nc seashells.io 1337

Ну и, естественно, для того, чтобы вам самому был виден вывод из консоли, можно воспользоваться tee.

apt-get | tee >(nc seashells.io 1337)

А если пользователи заменят в выданной ссылке seashells.io/v/pmMS6rAC букву v на p, seashells.io/p/pmMS6rAC то они увидят просто текстовый документ, без цветов и терминалов.

Пара занудных проблем с сайтом, о которых следует знать:

  1. Работа с клавиатурой не поддерживается. Естественно, никто не ожидает, что другие пользователи смогут запустить команды на вашем сервере через веб, но они так же не смогут сделать Ctrl+C или нажать F5. Если хочется что-то скопировать — пользуйтесь мышкой.
  2. Размер экрана определяется размером консоли, которая шарит соединение. Так что, если админ запустит htop на 4K мониторе, то обладателем мелкоэкранных устройств придётся либо уменьшать размер шрифта, либо наблюдать всё ту же проблему поехавших строк.
  3. Пять одновременных сессий на IP адрес. Так что пользователям из одной сети может прийтись туго.

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

На сайте вы можете найти официальный клиент на питоне и пару неофициальных клиентов. (Не очень понятно, зачем, ну да пусть.)

Давайте посмотрим, если мы сможем захабраэффектить этот сайт.

▍ Шарим в консоль

Никогда не попадали в такую замечательную ситуацию: сервер лежит. Нужно обновить сертификаты. Или подгрузить какой-нибудь ключ. Либо, наоборот, выгрузить ключ. Ты стоишь перед стойкой с KVM воткнутым в питомца и думаешь, что с ним делать. Иногда вещи можно починить с помощью USB флешки. Иногда этого не получается сделать. Но передавать данные на сервер и выгружать из их сервера надо.

Для этого существует большое количество сервисов, можно использовать dropbox, google, onedrive, yandex.disk, mega.io и тому подобные сервисы. Но у всех вышеописанных сайтов есть проблема. Они работают только при использовании браузеров или клиентов. Просто загрузить данные не получается.

Встречайте — transfer.sh

Для того чтобы воспользоваться сервисом, вам не нужно никаких утилит или браузеров. Прямо из консоли, набираем:

curl --upload-file ./hello.txt https://transfer.sh/hello.txt

В ответ получаем ссылку: transfer.sh/cK6onw/link.txt И всё! Файл доступен для загрузки и выгрузки. Никаких регистраций или учёток.

В дополнение, и абсолютно бесплатно, мы получаем уникальный QR код! Кто бы мог подумать!
По ссылке файл можно скачать тем же curl

curl http://transfer.sh/cK6onw/link.txt > link.txt

Если очень хочется выгрузить что-то такое секретное, то можно изначально пропустить это через gpg.

cat /tmp/hello.txt|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt
curl https://transfer.sh/1lDau/test.txt|gpg -o- > /tmp/hello.txt

Кстати, сам проект находится на гитхабе github.com/dutchcoders/transfer.sh, и если вам уж очень нравится — вы можете выгрузить его в свою среду и использовать локально. Это понизит возможность случайного распространения корпоративных ключей шифрования на всю Русь.

▍ Бонусы

Никогда не забываем, что иногда задачей сисадмина является потенциальное ожидание. Мне приходилось часами сидеть перед стойкой в ожидании пересбора рейд-массива или окончания обновления кода на проде.

Чем же можно себя занять, когда перед тобой нет интерфейса? Ну, естественно, можно установить lynx и попытаться почитать хабр, но если честно, наш уютный сайт не очень хорошо себя ведёт в lynx. А зачастую и установкой lynx заниматься не всегда хочется.

Но зачем нам lynx, если в мире есть telnet?

telnet aardmud.org

Аууууууу……

И пожалуйста. Начинайте играть. Создавайте логин, пароль, выбирайте расу, класс и вперёд, исследовать мир. С ещё тремястами такими же странными людьми, как и вы, которое готовы гонять DND-like игры в консоли, в ожидании деплоя.

А если DND это не для вас — то почему бы не сыграть в шахматы?

telnet freechess.org

Ходи конём!

Ну а дальше — по тексту. Е2-Е4 и уверенный слив противника.

Регистрация на обоих сайтах не требует выдачи никаких персональных данных и сделана только с целью сохранения прогресса.

Отдыхайте сколько влезет.

▍ Выводы

Тенденции развития консольных приложений не могут не радовать. Давайте делиться полезными console-only вещами, которые могут помочь сэкономить вам время.

Ещё раз для простоты:

  1. seashells.io
  2. transfer.sh

Читайте так же: