¿Cómo registro todas las entradas y salidas en una sesión de terminal?

46

¿Cómo guardo registros de todo el trabajo realizado a través de la terminal? Por ejemplo, quiero un registro de todo el trabajo realizado en la base de datos a través de la terminal.

Ankit
fuente
Esto también está integrado en sudo.
Wilhelm Erasmus
He agregado mi respuesta que puede revisar
Mansur Ali

Respuestas:

66

Cuando esté listo para comenzar a grabar un archivo de registro, escriba:

script screen.log

Ahora, hasta que detenga el script, todas las entradas y salidas en la Terminal se almacenarán en screen.log. Cuando haya terminado, simplemente escriba:

exit

Su archivo screen.log se almacenará en el directorio local. Si desea redirigirlo, use un nombre de ruta absoluto como ~/screen.log. Esto hará exactamente lo que estás buscando.

Fuente: Guía de Ubuntu - Cómo registrar comandos de terminal

xlukasx
fuente
Hola, gracias por la respuesta. Pero esto funcionará si inicio sesión en la base de datos mysql desde el shell utilizando la siguiente secuencia: - 1) script screen.log 2) mysql -u <usuario> -p <database> 3) algo de trabajo en la base de datos 4) salir; Veo que se crea el archivo screen.log pero no contiene registros para la base de datos. Compartiré el archivo lo antes posible. Gracias Ankt
Ankit
2
debería funcionar con todo lo que se ejecuta en la consola leyendo desde "entrada estándar" (generalmente su teclado) y escribiendo en la salida estándar (generalmente su ventana de terminal). Por lo tanto, debe incluir el cliente de línea de comandos mysql. La página de manual ( man script) incluso menciona vi(editor) ...
Izzy
10

Es posible que desee probar Asciinema . Además de hacer una grabación, tiene la posibilidad de compartirla e insertar el reproductor en su blog, artículo o en una conferencia.

enfermo
fuente
6

Tengo una mejor manera de usar syslog para registrar cada comando de shell, esto puede variar según la distribución de Linux, pero el método seguirá siendo el mismo

Debes seguir algunos pasos:

Paso 1 (Crear servicio Syslog)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

Paso # 2 (Abra bashrc e ingrese el siguiente comando)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste # 3 (reiniciar el servicio Syslog)

# /etc/init.d/rsyslog

Aquí hay una muestra de registro:

7 de diciembre 22:13:00 validationdb2 mahasan: root @ export [13291]: tail -f /var/log/mysql/mysql.log [0]
7 de diciembre 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0]
7 de diciembre 22:13:27 validationdb2 mahasan: root @ export [13291]: comando de prueba táctil [0]
Mansur Ali
fuente
táctica descarada !!!
Tom H
Hola Mansur, ¿podría explicar qué hace con esos comandos? Es difícil de entender, al menos para mí.
Jasser
En el Paso 1, nombraré un servicio para el registro de comandos que será utilizado por el proceso para enviar registros "local6" sería el punto final para el servicio para el registro. En el Paso 2, estoy configurando las cosas que realmente quiero "PROMPT_COMMAND = 'RETRN_VAL = $? " esta parte registrará la entrada del usuario y "logger -p local6.debug", enviará el archivo de registro al servicio que registra los datos de registro con el proceso de syslog de ayuda
Mansur Ali