Grabar la actividad de una terminal en Linux
LinuxEste 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.
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>
Tras ejecutar el comando el script informa que comienza a grabar guardando todo en el archivo que determinamos, en este caso “loglinuxlat.log”
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
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
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.