Запустите командную строку в браузере, это вкусно!

Командная строка API браузер
Запустите командную строку в браузере, это вкусно!

В предыдущей статье я написал статью "Все доступно API", этот проект предназначен для вывода результатов выполнения некоторых скриптов на веб-страницу.

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

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

Поэтому я начал искать и, наконец, нашел несколько хороших.

Web Terminal

  • ттыд:GitHub.com/too little0922/tiantongyuan…, инструмент, который может перевести командную строку в Интернет для выполнения, основанный на C.
  • получил:github.com/yudai/gotty, как и ttyd, но написан на Go, но последнее обновление было в 2017 году, и, по оценкам, он находится в аварийном состоянии.
  • мокрый:GitHub.com/Батлер Х/мокрый…, основанный на Node.js, вы также можете передать командную строку в веб для выполнения, но вам нужно войти на основе SSH, который фактически является веб-версией SSH-терминала.
  • Secure Shell (приложение Chrome): подключаемый модуль браузера Google, который также предоставляет веб-терминал SSH.
  • друг:tmate.io/, модифицированный из tmux для поддержки общего доступа к терминалу.

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

Ниже я расскажу о простом использовании ttyd.

Установить

Установка на самом деле очень проста, я использую Mac, поэтому я могу установить его напрямую с помощью HomeBrew:

brew install ttyd

Если вы используете Windows или Linux, они по-прежнему могут поддерживаться.Для установки см.GitHub.com/too little0922/tiantongyuan…глава.

использовать

ttyd поддерживает множество функциональных конфигураций, полная команда выглядит следующим образом:

ttyd is a tool for sharing terminal over the web

USAGE:
    ttyd [options] <command> [<arguments...>]

VERSION:
    1.6.3

OPTIONS:
    -p, --port              Port to listen (default: 7681, use `0` for random port)
    -i, --interface         Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)
    -c, --credential        Credential for Basic Authentication (format: username:password)
    -u, --uid               User id to run with
    -g, --gid               Group id to run with
    -s, --signal            Signal to send to the command when exit it (default: 1, SIGHUP)
    -a, --url-arg           Allow client to send command line arguments in URL (eg: http://localhost:7681?arg=foo&arg=bar)
    -R, --readonly          Do not allow clients to write to the TTY
    -t, --client-option     Send option to client (format: key=value), repeat to add more options
    -T, --terminal-type     Terminal type to report, default: xterm-256color
    -O, --check-origin      Do not allow websocket connection from different origin
    -m, --max-clients       Maximum clients to support (default: 0, no limit)
    -o, --once              Accept only one client and exit on disconnection
    -B, --browser           Open terminal with the default system browser
    -I, --index             Custom index.html path
    -b, --base-path         Expected base path for requests coming from a reverse proxy (eg: /mounted/here)
    -P, --ping-interval     Websocket ping interval(sec) (default: 300)
    -6, --ipv6              Enable IPv6 support
    -S, --ssl               Enable SSL
    -C, --ssl-cert          SSL certificate file path
    -K, --ssl-key           SSL key file path
    -A, --ssl-ca            SSL CA file path for client certificate verification
    -d, --debug             Set log level (default: 7)
    -v, --version           Print the version and exit
    -h, --help              Print this text and exit

Visit https://github.com/tsl0922/ttyd to get more information and report bugs.

Как видите, вы можете использовать -p для указания работающего порта, использовать -c для указания пароля для входа и так далее.

основное использование

Давайте попробуем. Самые основные команды следующие:

ttyd bash

Это запускает веб-версию bash со следующими результатами:

Это показывает, что он работает на 7681, тогда мы можем открытьhttp://localhost:7681/, вы можете запустить команду напрямую:

Очень шелковистый.

Я видел, что за ним стоит протокол передачи WebSocket, так что стабильность по-прежнему гарантирована:

Конечно, мы также можем использовать наш любимый Shell, например zsh, вместо bash, команда выглядит следующим образом:

ttyd zsh

В данном случае Shell в браузере — это zsh:

привязать порт

Конечно, мы также можем изменить порт, например, 8000, вы можете использовать следующую команду:

ttyd -p 8000 zsh

Чтобы ttyd мог запустить службу HTTP на порту 8000, мы открываемhttp://localhost:8000/Команду можно выполнить.

Basic Auth

Конечно, выставлять его напрямую не очень безопасно.Мы можем установить Basic Auth и использовать параметр -c для указания имени пользователя и пароля.Формат такой:username:password, например, указываем, что логин и пароль оба admin, тогда команда пишется так:

ttyd -p 8000 -c admin:admin zsh

открыть вот такhttp://localhost:8000/После этого необходимо ввести логин и пароль для входа:

Автоматически открывать браузер

Мы также можем использовать команду -B для автоматического открытия браузера:

ttyd -p 8000 -B zsh

После запуска автоматически откроется браузер по умолчанию.http://localhost:8000/, нам не нужно снова вводить URL, это очень удобно.

Поэтому приведенную выше команду можно даже превратить в псевдоним, например:

alias webcmd="ttyd -p 8000 -B zsh";

Введите вот такwebcmdВы можете легко открыть веб-версию командной строки.

Поддержка докера

Кроме того, ttyd также предоставляет образ Docker. Если вы не хотите его устанавливать, вы можете запустить Docker напрямую. Например, вы можете запустить его на 7681:

docker run -it --rm -p 7681:7681 tsl0922/ttyd

Но это фактически выставляет командную строку внутри контейнера.Если вы хотите выставить командную строку хоста, вам нужно смонтировать диск:

SSH-терминал

ttyd также поддерживает терминал SSH, команда выглядит следующим образом:

ttyd login

В этом случае после открытия браузера требуется вход в SSH, и перед использованием можно использовать правильное имя пользователя и пароль SSH.

поддержка SSL

Если вы хотите настроить поддержку SSL, то есть для поддержки HTTPS, вы можете самостоятельно сгенерировать сертификат и добавить соответствующие параметры для запуска ttyd.Ссылка на ссылку:GitHub.com/too little0922/tiantongyuan….

Более

Вышеупомянутое использование может в основном удовлетворить повседневные потребности.Если вы хотите узнать больше об использовании, вы можете обратиться к его Wiki, ссылка:GitHub.com/too little0922/tiantongyuan….

общедоступная сеть

Конечно, если мы хотим выставить его в общедоступную сеть, мы также можем сотрудничать с Ngrok.Например, ttyd работает на порту 8000, и я могу использовать Ngrok для его раскрытия:

ngrok http 8000

Результаты приведены ниже:

Чтобы я мог получить доступ к этому терминалу через указанный URL, например, здесь я могу использовать11b4-2404-f801-8050-3-bf-00-55.ngrok.io/для доступа к моему терминалу:

Очень хорошо!

Суммировать

Ну а вышеописанное — базовое использование ttyd, с его помощью мы легко можем передать терминал на определенной машине в Сеть для выполнения, что очень удобно и полезно.

Для более интересного контента, пожалуйста, обратите внимание на мои публичные аккаунты «Coder of Attack» и «Cui Qingcai丨Jing Mi».