Ubunlog Damian Amoedo  

GoTTY, comparte la terminal como una aplicación web

about GoTTY

En el siguiente artículo vamos a echar un vistazo GoTTY. Se trata de un programa que permite a los usuarios compartir aplicaciones para la terminal de Gnu/Linux a través de un navegador web. GoTTY es un sencillo servidor web escrito en Go que ejecuta un programa que no es GUI, y puede lanzarse de tal manera que un navegador lo pueda mostrar y de forma opcional, permite que el usuario interactúe.

Quizás no todo el mundo encuentre útil la posibilidad de ejecutar un programa de línea de comandos específico en una ventana del navegador. Pero existen algunos casos, como por ejemplo cuando queremos monitorear un sistema de forma remota utilizando top sin tener que conectarse al sistema, en los que puede resultar interesante disponer de esta posibilidad.

Si podemos conseguir que la salida de top se muestre en una ventana del navegador, esta sería una solución muy sencilla. Aun que existen otras opciones para obtener el mismo resultado, puede interesarnos disponer de otras características de la línea de comandos, o tener la opción de utilizar usuarios autentificados para interactuar con el software que se ejecuta. Esto y otras cosas, GoTTY nos va a permitir hacerlo de forma sencilla.

Instalación de GoTTY en Ubuntu

Para poder hacer uso de GoTTY vamos a necesitar tener instalado Go. La mayor parte de las distribuciones Gnu/Linux disponen del lenguaje Go en el repositorio oficial, por lo que podemos instalarlo fácilmente. Para instalarlo y configurarlo en nuestro Ubuntu, hace un tiempo escribimos en este blog un artículo en el que se explica cómo hacerlo de manera sencilla.

También vamos a necesitar instalar Git, lo cual podremos hacer escribiendo en la terminal (Ctrl+Alt+T):

sudo apt install git

Cuando ya disponemos de Go podemos empezar escribiendo lo siguiente. Este comando instalará el binario de GoTTY en tu variable de entorno:

go get github.com/yudai/gotty

Para comprobar que todo ha sido correcto, escribe la siguiente orden:

comprobación de la instalación de GoTTY

ls $GOPATH/bin/

Cómo usar GoTTY en Ubuntu

Para ejecutarlo, utilizaremos la siguiente sintaxis:

$GOBIN/gotty [opciones] <comando>

En caso de que no interesa lanzar y compartir el comando top, solo habría que escribir:

ejecutando top con GoTTY

$GOBIN/gotty top

El comando top se ejecutará en tu máquina actual en el puerto 8080 (http://127.0.0.1:8080/). Desde el navegador no se verá una imagen estática, la pantalla se actualiza como si se estuviese ejecutando en una terminal.

gotty top funcionando en el navegador

El servidor se ejecutará hasta que lo mates. Esto se consigue pulsando Ctrl+C. Si alguien está conectado al servidor, se necesitarán dos pulsaciones de Ctrl+C . A este comando se le pueden añadir opciones para cambiar el puerto (-p) y la dirección (-a).

Hay que tener en cuenta que de forma predeterminada, GoTTY no permite a los clientes escribir entradas en el TTY, sólo permite cambiar el tamaño de las ventanas.

Editar un archivo desde el navegador

Vamos a poder utilizar la opción -w o –permit-write para permitir que los clientes escriban en el TTY, lo cual no es recomendable debido a las posibles amenazas de seguridad en el servidor.

El siguiente comando utilizará el editor de línea de comandos vi para abrir el archivo ubunlog.txt y permitirá editarlo desde el navegador web:

Gotty editando archivo

$GOBIN/gotty -w vi ubunlog.txt

Usar GoTTY con autenticación básica (nombre de usuario y contraseña)

En el primer caso que acabamos de ver, es probable que no nos importe mucho si extraños pueden ver la salida de top. Si la máquina en la que se está ejecutando GoTTY está detrás de un firewall, los de fuera no van a poder verlo. Para algunas aplicaciones, eso sería suficiente. Pero, si por ejemplo, si permitimos la entrada (con la opción -w), las personas podrían eliminar procesos de forma remota, y esto probablemente no sea una buena idea publicarlo en la Web.

Para intentar poner una especie de solución a a esto, podemos activar un sistema de autenticación básico. Aquí los clientes deberán introducir el nombre de usuario y la contraseña especificados para conectarse al servidor GoTTY.

El siguiente comando restringirá el acceso del cliente utilizando la opción -c y va a solicitar a los usuarios las credenciales especificadas. Para este ejemplo el nombre de usuario será ubunlog y  la contraseña @12345.

usuario y password con GoTTY

$GOBIN/gotty -w -p "9000" -c "ubunlog:@12345" top

Generar URL aleatoria en Gotty

url alegatoria generada con GoTTY

Otra forma de restringir el acceso al servidor es usando la opción -r. Aquí, GoTTY generará una URL aleatoria para que sólo los usuarios que la conozcan puedan acceder al servidor.

Las que acabamos de ver, son solo algunas de las cosas que se pueden hacer con GoTTY. Se pueden consultar estas y otras, más en detalle desde la página GitHub del proyecto. Esta es una de esas soluciones que no es para todo, pero si necesitas lo que hace, está bien tener está posibilidad disponible.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.