Как показать детям те прелести, которые происходят в консоли?
Самое неприятное — это когда возникает необходимость показать какую-то ссылку на экране. После завершения операции в консоли отобразилась ссылка, или ключ, который надо расшарить с командой. Естественно, приходится выделять, копировать и «дублировать в чатик». Особенно это неудобно, когда в чатик надо продублировать то, что выплюнула тебе какая-нибудь команда терминала. Строки, конечно же, заботливо съедут, форматирование потеряется, а цвета поблёкнут.
▍ Шарим консоль — 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.com/dutchcoders/transfer.sh, и если вам уж очень нравится — вы можете выгрузить его в свою среду и использовать локально. Это понизит возможность случайного распространения корпоративных ключей шифрования на всю Русь.
▍ Бонусы
Никогда не забываем, что иногда задачей сисадмина является потенциальное ожидание. Мне приходилось часами сидеть перед стойкой в ожидании пересбора рейд-массива или окончания обновления кода на проде.
Чем же можно себя занять, когда перед тобой нет интерфейса? Ну, естественно, можно установить 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, спасибо tvl
- tmate.io — совместная работа через консоль, спасибо m1a1x1
-
nc rya.nc 1987
— если админ вас раздражает, спасибо nervix - awesome-console-services — большая коллекция, спасибо belonesox
Комментарии (27)
m1a1x1
27.10.2021 18:14+3Я часто для таких целей использую tmate: https://tmate.io/
Очень простая в использовании утилита. Получается полноценный опыт парного программирования. Очень советую.
vsviridov
27.10.2021 23:02+2Есть еще `butterfly` (https://github.com/paradoxxxzero/butterfly). он правда давно не обновлялся, но идея та-же… У него правда безопасность по клиентским SSL сертификатам, он больше не для того, что-бы расшарить консоль, а иметь к ней доступ вне SSH
saboteur_kiev
28.10.2021 01:57+4Так шарить консоль всегда можно было через screen
По поводу консольных программ, я писал простенький аналог certificate browser под консоль: https://habr.com/ru/post/539612/
Честно говоря, если нужно кому-то что-то интерактивно шарить, то обычно используется хотя бы голосовая связь, а практически в любом "звонке" есть и шаринг экрана. Скайп, телеграм, зум, да практически все. Плюс трансфер файлов, плюс чат прилагается.
По поводу передачи файлов - так обычный scp/nfs/ftp/ssh - не совсем понятно зачем выкладывать нужные тебе файлы куда-то. А если у тебя уже там есть сервер, то штатные утилиты же достаточны, и httpd или nginx чуть ли не из коробки.
telnet aardmud.org
MUD это хорошо. Очень. Но играть в чистом телнете.. неудобно. Куда же пихать ранвалки, триггеры, или хотя бы удобные стрелочки...Плюс спутать DND и CRPG, точнее прародителя MMORPG ;)
Статья интересная. Честно. Но уж очень велосипедные решения, особенно учитывая, что nc не везде есть из коробки, и прав может не хватать.albatross
28.10.2021 20:06+3> Так шарить консоль всегда можно было через screen
нынче уже tmux рулит:
открываем сессию$ tmux -S /tmp/tmux_share new -s my_nickname $ chmod 777 /tmp/tmux_share
коллеги заходят на этот же сервер по ssh и подключаются к нашей сессии:$ tmux -S /tmp/tmux_share att -t my_nickname -r -r - подключение в режиме read-only, если надо в парное программирование, этот параметр можно не указывать
belonesox
28.10.2021 02:38+6Погода → curl be.wttr.in/Minsk
Курсы валют → curl rate.sx/btc
Шпаргалки → curl cheat.sh/lua/copy+file
→ доклад автора → https://0x1.tv/20180825C
scorpka
28.10.2021 06:33Сначала не понял почему у автора проблемы какие то..
Но зачем нам lynx, если в мире есть telnet?
(С)После этой строчки понял
kasigor
28.10.2021 12:08-1Ошибку дает:
ce@eee:/$ echo "Привет, Хабр!" | nc seashells.io 1337
-bash: syntax error near unexpected token `seashells.io'
Чего ему надо еще?
p.s.: Понял почему не работало. Надо через sudo запускать было ))
nervix
28.10.2021 16:24+4nc rya.nc 1987
лучший консольный сервис
Nurked Автор
28.10.2021 17:37+1Ээээээ. Вы с ума сошли? Я только что поднял виртуальный сандбокс, только для того, чтобы увидеть это? Точно в закладки.
DistortNeo
28.10.2021 17:44Обнаружил, что из-под far2l это не работает (не отображаются цвета).
Как думаете, стоит завести issue?Nurked Автор
28.10.2021 17:53Нет, тут скорее всего проблема в вашем терминале.
Хотя, я согласен, для такого полезного сервиса, можно было бы выпустить и поддержку различных терминалов, но. Всё-же, тут лучше с правильной цветовой палитрой
DistortNeo
28.10.2021 18:10+1Нет, таки в far2l, потому что в mc всё работает. Соответствующий issue уже есть:
https://github.com/elfmz/far2l/issues/901
sleirsgoevy
Справедливости ради, Яндекс.Диск позволяет получать доступ к диску по WebDAV. Скачивать (и даже загружать через curl -T) файлы можно по ссылкам вида https://логин:пароль@webdav.yandex.ru/path/to/file.txt. Dropbox тоже позволяет создать прямую ссылку, не требующую браузера.
Nurked Автор
Тут вы, несомненно, правы. Но, каждый раз когда мне надо вводить свой пароль на неизвестном сервере, мне становится не по себе.
Плюс, печатать это намного проще в консоли. Пароль-то у меня длинный, 20 символов, включая знак восклицания и двоеточие. А вводить эти два символа в командной строке - это сомнительное удовольствие.
v-oz
что-то у меня после включения двухфакторной ауте...ции сломался плагин для тотал командера на ведроиде. И в настройках янде делал ему пароль - не помогает.
Или я что не так делаю или одно из двух