grabar sesion consola terminal linux

Grabar la actividad de una terminal en Linux

Este tutorial muestra cómo grabar en Linux todo lo que pasa en una terminal localmente para ser después reproducido en tiempo real de dos maneras posibles con los comandos script y ttyrec.
También se explica como grabar todo lo que pasa en la consola y poder leerlo en formato de log con el comando cat.

Nota: los videos de las grabaciones de las sesiones de terminal para este tutorial fueron hechos con el plugin de WordPress Asciinema Player. Asciinema Player puede ser instalado desde el mismo WordPress.

Grabar una sesión de terminal usando script

El primer programa de este tutorial para grabar la actividad de una terminal en Linux es Script.
Script viene incluido por defecto en algunas distribuciones Linux. Este comando permite grabar la sesión de una terminal en un log para después ser visto por ejemplo con el comando cat.
Para grabar una sesión solamente invocamos el comando script seguido del nombre del archivo que queremos darle al log con la sesión grabada.
En este caso voy a grabar la sesión nombrando al log como “loglinuxlat.log”

script <loglinuxlat.log>
Grabar la actividad de una terminal en Linux

Como se ve en la captura anterior, tras ejecutar el comando el script informa que comienza a grabar guardando todo en el archivo que determinamos, en este caso “loglinuxlat.log”
También como se ve en la imagen, para cerrar el script y dejar de grabar simplemente ejecutamos exit.

Una vez grabada la sesión, podemos ver el contenido del log usando el comando cat como en el siguiente ejemplo:

cat loglinuxlat.log

También es posible reproducir la sesión de la consola en tiempo real si añadimos el parámetro –timing. Esta opción sirve para especificar un archivo log adicional que loguea la información del tiempo de cada actividad en la consola.
La sintaxis es:

script --timing=<TimeFile>  <OutputFil>

En el siguiente ejemplo se graba la sesión en un archivo de nombre “linuxlat.log” y se guarda la información de tiempos de actividad en la terminal en un archivo nombrado “datostiempo.log”:

script --timing=datostiempo.log linuxlat.log

Tras ejecutar exit para terminar el proceso de grabación usamos el comando scriptreplay seguido del parámetro –timing, el nombre del archivo que contiene la información del tiempo y el nombre del log con la sesión guardada, en mi caso ejecto:

scriptreplay --timing datostiempo.log --typescript linuxlat.log

Aunque es imposible notarlo con una captura de pantalla, si ejecutan el comando verán pasar la sesión de terminal en tiempo real como si fuera un video , para verlo reproduzcan el siguiente video:


También es posible acelerar o enlentecer la velocidad de reproducción con los parametros -m (maxdelay) y -d (divisor). Con la opción -m podemos definir los intervalos de segundos para reproducir cada actividad mientras que con la opción -d podemos dividirlos.
El siguiente ejemplo muestra como reproducir la sesión permitiendo un máximo de 1 segundo de intervalo entre cada comando:

scriptreplay -m 1 --timing datostiempo.log --typescript linuxlat.log

Reproducir el video para notar la diferencia en la velocidad de reproducción:

El próximo ejemplo divide el tiempo real por el factor que se especifique, en este caso se duplica  la velocidad de reproducción especificando el factor 2:

scriptreplay -d 2 --timing datostiempo.log --typescript linuxlat.log

Reproducir el video para notar la diferencia en la velocidad de reproducción:

Cómo grabar sesión en consola usando TTYREC

Otro método para grabar todo lo que pasa en la terminal es el comando ttyrec, pero a diferencia de script, ttyrec no esta incluido por defecto en la mayoría de distribuciones Linux, al menos no en Debian. Para instalarlo se debe ejecutar el siguiente comando:

apt install ttyrec
grabar sesión en consola usando TTYREC

Ttyrec es muy fácil de usar, incluso más que el comando script explicado anteriormente. Para ejecutarlo simplemente se invoca al programa especificando el nombre del archivo de salida o log como en el siguiente ejemplo:

ttyrec linuxlatsesion1

Para reproducir la sesión en tiempo real se ejecuta:

ttyplay linuxlatsesion1

En el siguiente video pueden ver lo fácil que es reproducir la sesión:

Conclusión:

Grabar sesiones de terminal es una excelente posibilidad para compartir conocimiento, tutoriales o incluso tomar examenes cuando el tiempo de respuesta es relevante.
El comando script es sin duda la mejor opción si se necesita manipular los tiempos de reproducción y además viene por defecto en distribuciones

Por otro lado el comando Ttyrec aunque no viene instalado por defecto es una buena opción para usuarios a quienes no les gusta la línea de comandos ya que no hay opciones  como con el comando script.
Finalmente ambas opciones son muy simples para grabar y reproducir actividad de la consola en Linux. Ambos son amistosos para el usuario y disponen de páginas man detalladas.

Espero que este tutorial sobre cóomo grabar la actividad de una terminal en Linux haya sido útil, de ser así recomiendo seguir la lectura con un tutorial sobre Cómo detectar rootkits en Linux.