viernes, 22 de mayo de 2015

asciinema, una solución elegante y rápida para grabar y compartir el terminal

asciinema es una solución libre que nos permite grabar sesiones de trabajo en el y compartirlas luego en la web.Graba justo donde vamos a trabajar y antes de comenzar ejecutaremos el comando asciinema rec. Para finalizar enviamos la combinación Ctrl-D o el comando exit. 

Al reproducir grabaciones que otros han compartido podemos pausarla y copiar comandos que deseamos probar en nuestro sistema, ya que se trata solo de texto y no de una imagen o mapa de bits.

Por otro lado es fácil de incrustar en nuestro blog o sitio web, documentación, presentación o tutorial.

Para instalarlo en sistemas GNU/Linux lo harmos con el siguiente comando:
[fraterneo@rainbow ~]$ curl -sL https://asciinema.org/install | sh
Downloading asciinema v1.0.0 for linux-amd64...
######################################################################## 100.0%
Warning: you may be asked for administrator password to save the file in /usr/local/bin directory
Installing to /usr/local/bin/asciinema...
[sudo] password for fraterneo: 
Success.

Start recording your terminal by running: asciinema rec

Como nos indica el final del script, ya podemos comenzar a grabar sesiones del terminal. En Github se encuentra el código fuente si lo quieres instalar desde el mismo.

Un detalle a tener muy en cuenta es el tema de los locales, ya que asciinema requiere UTF-8 nativo para poder correr en nuestro sistema. De manera que si nos devuelve el siguiente error, es necesario hacer un cambio a UTF-8 que, de hecho hay que escribirlo literalmente así en la variable, pues en Fedora y posiblemente otros sistemas venga todo en minúscula y sin guión: utf8.
[fraterneo@rainbow ~]$ asciinema rec
asciinema needs a UTF-8 native locale to run. Check the output of `locale` command.

Ahora visualizamos los locales con el comando locale:
[fraterneo@rainbow ~]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

Podemos observar que efectivamente tenemos está escrito utf8. Pero de momento para hacer funcionar asciinema usaremos la variable LC_ALL, la cual abarca todas las anteriores.
[fraterneo@rainbow ~]$ export LC_ALL=en_US.UTF-8
[fraterneo@rainbow ~]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Ahora podemos ejecutar asciinema y comenzar a grabar sesiones del terminal.
[fraterneo@rainbow ~]$ asciinema rec
~ Asciicast recording started.
~ Hit Ctrl-D or type "exit" to finish.
[fraterneo@rainbow ~]$ rpm -qa | grep staging
staging-kmod-addons-3.19.2-1.fc21.noarch
kmod-staging-3.19.5-200.fc21.x86_64-3.19.2-2.fc21.3.x86_64
[fraterneo@rainbow ~]$ exit
exit
~ Asciicast recording finished.
~ Press  to upload,  to cancel.

https://asciinema.org/a/20odfhq9hh2b1mxv6dff3kyir

Para tener un resultado como éste:
Finalmente, para que estas grabaciones sean públicas, debemos darnos de alta en el sitio de asciinema usando un correo electrónico y confirmando el mismo. Luego de confirmar la cuenta volvemos al terminal y con el comando asciinema auth asociaremos a la misma las grabaciones que ya hemos realizado y podemos editarlas para, entre otras cosas, hacerlas públicas como ya dijimos.

Más información y recursos:
https://asciinema.org/docs/how-it-works
https://asciinema.org/login/new
https://github.com/asciinema/asciinema/releases
http://www.linuxfromscratch.org/lfs/view/systemd/chapter07/locale.html

No hay comentarios:

Publicar un comentario