¿Cómo puedo grabar automáticamente cada sesión de terminal?

¿Cómo puedo grabar automáticamente cada sesión de terminal?

Me gusta usar herramientas como history, scripty asciinemagrabar y revisar sesiones xterm (es decir, bash/ sh) por razones típicas de administración general y también, a veces, para un estudio/revisión integral; como herramienta de aprendizaje.

  • Pensé en establecer el valor predeterminado $SHELLcomo una ruta directa a dichas herramientas y/o comandos, como:

    • /bin/script transcript.log;
    • /bin/asciinema rec -w0.5 term_log.json;
  • Pero estas herramientas normalmente dependen de tener un $SHELLconjunto predeterminado (es decir /bin/bash, /bin/sh, /bin/zsh, etc.).

  • Además, siento que redefinir las variables del sistema (es decir $SHELL, $TERM, etc.) o tratar de hacerlo funcionar con archivos de configuración ( *.conf) y punto ( ~/.bashrc/ ~/.bash_profile) estará plagado de todo tipo de agujeros y problemas potenciales.

  • Sin embargo, cada vez que decido o me doy cuenta de que quiero una transcripción de una sesión, es después del hecho, o ya estaré a la mitad de la parte interesante, o algún escenario similar.

¿Cuál es la práctica correcta o recomendada para configurar algo como esto para simplemente registrar todo (preferiblemente stdin, stdout(y stderrcuando corresponda), etc.) automáticamente?

Respuesta1

Algo como esto en tu .bash_profileo .bashrcpodría funcionar para ti:

if test -t 0 -a -t 1 -a -z "$SCRIPTING"
then
    export SCRIPTING="$HOME/.script.$(date +%Y%m%d_%H%M%S).$$)"
    exec script "$SCRIPTING"
fi

información relacionada