Всем привет! Сегодня я расскажу о мега-удобной штуке, когда нам нужно показать вывод консоли в веб-интерфейс и даже поработать с консолью без SSH. Итак, исходное состояние – свежеустановленная Debian 8, кстати, отличная ОС. Настроен сетевой интерфейс и /etc/resolv.conf на DNS провайдера. Больше ничего не делал, даже apt-get update/upgrade.
Первым делом, нам потребуется Golang на машине. Открываем офсайт и узнаём ссылку на последнюю версию:
Получаем ссылку и скачиваем её в Linux через wget:
# wget https://storage.googleapis.com/golang/go1.5.linux-386.tar.gz
После того, как файл будет скачан, разархивируем его в /usr/local
# tar -C /usr/local -xzf go1.5.linux-386.tar.gz
Затем добавим каталог в переменную окружения PATH
# export PATH=$PATH:/usr/local/go/bin
# export GOPATH=$HOME/work
Установим приложение gotty
# go get github.com/yudai/gotty
Переходим в каталог ~/work/bin и запускаем gotty с параметром команды, при этом у нас стартует веб-сервер, транслирующий консоль этой команды. Если указать ключ -w, то возможно делать ввод в эту команду.
Выведем команду top:
# ./work/bin/gotty top
А теперь открываем нашу машину по адресу http://10.0.0.5:8080
Как я уже говорил, можем сделать интерактивный обмен данными – позволить выполнять ввод команд в веб-браузер:
# ./work/bin/gotty -w bash
Как видите, отличный инструмент, позволяющий работать с сервером прямо из браузера, без ssh-клиента. Но требуется защитить подключение, благо есть возможность использовать SSL/TLS, авторизацию по ключам и установку единственного соединения. Кроме того, возможно прикрутить basic_auth для простой защиты соединения и генерировать URL для подключения произвольной длины.
Этот инструмент заслуживает внимания. Надеюсь, было интересно!
Где это может пригодиться – например предоставить демо-доступ в вывод какой-либо программы (интерактивные, top, iftop и т.д). А так же предоставить возможность удаленного шелла, правда придётся защищать.
Ухты, классная штука! Наверное в учебных целях хорошо использовать, не имея ССШ под рукой.