Шарим (в) консоль
Полезные консольные сервисы для сисадминов и программистов: стриминг терминала через seashells.io, передача файлов через transfer.sh и чем заняться в консоли, пока ждёшь деплой.
Мы уже все привыкли, что конференции проводятся виртуально. Мы все работаем через зумы, скайпы, миты и тимзы. Удобно, конечно, но у нас есть одна занудная проблема. Когда нам, программистам надо расшарить экран, мы тяжело вздыхаем и нажимаем кнопку Share Screen. Всё это не без проблем.
Как показать детям те прелести, которые происходят в консоли?
Самое неприятное — это когда возникает необходимость показать какую-то ссылку на экране. После завершения операции в консоли отобразилась ссылка, или ключ, который надо расшарить с командой. Естественно, приходится выделять, копировать и «дублировать в чатик». Особенно это неудобно, когда в чатик надо продублировать то, что выплюнула тебе какая-нибудь команда терминала. Строки, конечно же, заботливо съедут, форматирование потеряется, а цвета поблёкнут.
О безопасности замолвите слово…
Шарим консоль — seashells.io
Решением этих проблем и занимается 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 update 2>&1 | nc seashells.io 1337
Ну и, естественно, для того, чтобы вам самому был виден вывод из консоли, можно воспользоваться tee:
apt-get | tee >(nc seashells.io 1337)
А если пользователи заменят в выданной ссылке seashells.io/v/pmMS6rAC букву v на p (seashells.io/p/pmMS6rAC), то они увидят просто текстовый документ, без цветов и терминалов.
Пара занудных проблем с сайтом, о которых следует знать:
- Работа с клавиатурой не поддерживается. Естественно, никто не ожидает, что другие пользователи смогут запустить команды на вашем сервере через веб, но они так же не смогут сделать Ctrl+C или нажать F5. Если хочется что-то скопировать — пользуйтесь мышкой.
- Размер экрана определяется размером консоли, которая шарит соединение. Так что, если админ запустит htop на 4K мониторе, то обладателям мелкоэкранных устройств придётся либо уменьшать размер шрифта, либо наблюдать всё ту же проблему поехавших строк.
- Пять одновременных сессий на IP адрес. Так что пользователям из одной сети может прийтись туго.
Проект находится в бете и тестируется. Вам не нужно никакой регистрации. Не нужны и аккаунты. Все ссылки, созданные сайтом, будут автоматически удалены через несколько часов после завершения работы.
На сайте вы можете найти официальный клиент на питоне и пару неофициальных клиентов. (Не очень понятно, зачем, ну да пусть.)
Шарим в консоль — transfer.sh
Никогда не попадали в такую замечательную ситуацию: сервер лежит. Нужно обновить сертификаты. Или подгрузить какой-нибудь ключ. Либо, наоборот, выгрузить ключ. Ты стоишь перед стойкой с 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, и если вам уж очень нравится — вы можете выгрузить его в свою среду и использовать локально. Это понизит возможность случайного распространения корпоративных ключей шифрования на всю Русь.
Бонусы
Никогда не забываем, что иногда задачей сисадмина является потенциальное ожидание. Мне приходилось часами сидеть перед стойкой в ожидании пересбора рейд-массива или окончания обновления кода на проде.
Чем же можно себя занять, когда перед тобой нет интерфейса? Ну, естественно, можно установить lynx и попытаться почитать Хабр, но если честно, наш уютный сайт не очень хорошо себя ведёт в lynx. А зачастую и установкой lynx заниматься не всегда хочется.
Но зачем нам lynx, если в мире есть telnet?
telnet aardmud.org
И пожалуйста. Начинайте играть. Создавайте логин, пароль, выбирайте расу, класс и вперёд, исследовать мир. С ещё тремястами такими же странными людьми, как и вы, которые готовы гонять DND-like игры в консоли, в ожидании деплоя.
А если DND это не для вас — то почему бы не сыграть в шахматы?
telnet freechess.org
Ну а дальше — по тексту. Е2-Е4 и уверенный слив противника.
Регистрация на обоих сайтах не требует выдачи никаких персональных данных и сделана только с целью сохранения прогресса.
Отдыхайте сколько влезет.
Выводы
Тенденции развития консольных приложений не могут не радовать. Давайте делиться полезными console-only вещами, которые могут помочь сэкономить вам время.
Ещё раз для простоты:
- seashells.io — стриминг терминала в браузер
- transfer.sh — передача файлов через консоль
- sprunge.us — аналог pastebin
- tmate.io — совместная работа через консоль
nc rya.nc 1987— если админ вас раздражает- awesome-console-services — большая коллекция консольных сервисов
Читать дальше
Похожие посты
Клонируем сами, своими руками
Как клонировать Debian Linux вручную без сторонних утилит: dd, partprobe, sgdisk, e2fsck, resize2fs и немного Go — на случай, если вас занесло на необитаемый остров.
Правим QEMU железным кулаком
Туториал о том, как на Go программно управлять виртуальными машинами QEMU через libvirt — пишем небольшую утилиту с человеческим выводом в JSON вместо virsh.
Девочка, балансирующая на NVMe-over-TCP 2.0
Продолжаем издеваться над NVMe-over-TCP. Настоящий тестовый стенд из двух Dell PowerEdge, 10-гигабитная сеть, новое ядро 5.16 и ответы на вопросы из первой части.