GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo grabar y reproducir sesiones de terminal de Linux usando los comandos 'script' y 'scriptreplay'

En esta guía, veremos cómo usar un script y reproducción de secuencias de comandos comandos en Linux que pueden ayudarlo a registrar comandos y su salida impresa en su terminal durante una sesión determinada.

El comando de historial es una excelente utilidad de línea de comandos que ayuda a los usuarios a almacenar el comando utilizado anteriormente, aunque no almacena la salida de un comando.

No Señorita: Showterm.io:una herramienta de grabación de terminales de Linux

No Señorita: Los 8 mejores grabadores de pantalla de escritorio para Linux

Por lo tanto, el guión El comando es útil para brindarle una funcionalidad poderosa que lo ayuda a registrar todo lo que está impreso en su terminal en un archivo_de_registro . Luego puede consultar este archivo más adelante en caso de que desee ver el resultado de un comando en el historial desde el archivo_de_registro. .

También puede reproducir los comandos que grabó con scriptreplay comando mediante el uso de una información de tiempo.

Cómo grabar una terminal de Linux usando un comando de secuencia de comandos

El guión El comando almacena las actividades del terminal en un archivo de registro que puede ser nombrado por un usuario, cuando un usuario no proporciona un nombre, el nombre de archivo predeterminado, mecanografiado se utiliza.

Sintaxis básica del comando script
# script [options] - -timing=timing_file log_filename

Para iniciar la grabación de la terminal de Linux, escriba script y agregue el registro nombre de archivo como se muestra.

[email protected] ~ $ script history_log.txt

Script started, file is history_log.txt

Para detener secuencia de comandos , escriba salir y presione [Entrar] .

[email protected] ~ $ exit

Script done, file is history_log.txt

Si el script no puede escribir en el archivo de registro mencionado, muestra un error.

Por ejemplo, en el siguiente resultado, los permisos del archivo mecanografiado no permite la lectura, escritura y ejecución del archivo por parte de ningún usuario o grupo. Cuando ejecuta el comando de secuencia de comandos sin un nombre de archivo de registro, intenta escribir en el archivo predeterminado, mecanografiado. por lo tanto, muestra un error.

[email protected] ~ $ ls -l typescript

--------- 1 ubuntu ubuntu 144 Sep 15 00:00 typescript

[email protected] ~ $ script

script: open failed: typescript: Permission denied
Terminated

Ejemplos de uso del comando script

He llamado a mi archivo de registro script.log en el ejemplo a continuación, puede darle a su archivo un nombre diferente.

[email protected] ~ $ script script.log

Ahora intente ejecutar algunos comandos para permitir que el script registre los comandos ejecutados en la terminal.

[email protected] ~ $ cal

   September 2015     
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30           
                      
[email protected] ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
tecmint  tty8     :0               10:45    4:06m  7:40   0.36s x-session-manager
tecmint  pts/5    :0               13:42    4.00s  0.07s  0.00s script script.log

[email protected] ~ $ uptime

 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62

[email protected] ~ $ whoami

tecmint

[email protected] ~ $ echo 'using script'

using script
[email protected] ~ $ exit
exit
Script done, file is script.log

Ahora intente ver el archivo de registro 'script.log ‘ para todos los comandos grabados, mientras ve el registro se da cuenta de que el script también almacena saltos de línea y retrocesos.

[email protected] ~ $ vi script.log
Salida de muestra
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M
   September 2015     ^M
Su Mo Tu We Th Fr Sa  ^M
       1  2  3  4  5  ^M
 6  7  8  9 10 11 12  ^M
13 14 15 ^[[7m16^[[27m 17 18 19  ^M
20 21 22 23 24 25 26  ^M
27 28 29 30           ^M
                      ^M
^[[01;[email protected]^[[01;34m ~ $^[[00m w^M
 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT^M
tecmint  tty8     :0               10:45    4:06m  7:40   0.36s x-session-manager^M
tecmint  pts/5    :0               13:42    4.00s  0.07s  0.00s script script.log^M
^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M
 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whoami^M
tecmint^M
^[[01;[email protected]^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M
using script^M
^[[01;[email protected]^[[01;34m ~ $^[[00m exit^M
exit^M

Script done on Wednesday 16 September 2015 02:49:59 PM IST
~                                                              

Puede utilizar -a opción para agregar el archivo de registro o mecanografiado, conservando el contenido anterior.

[email protected] ~ $ script -a script.log
Script started, file is script.log

[email protected] ~ $ date
Wed Sep 16 14:59:36 IST 2015


[email protected] ~ $ pwd
/home/tecmint


[email protected] ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz


[email protected] ~ $ whatis script
script (1)           - make typescript of terminal session

Ver el contenido del script, iniciar sesión después de usar -a opción para agregarlo.

[email protected] ~ $ vi script.log
Salida de muestra
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m date^M
Wed Sep 16 14:59:36 IST 2015^M
^[[01;[email protected]^[[01;34m ~ $^[[00m pwd^M
/home/tecmint^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whre^H^[[K^H^[[Kereis script^M
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whatis script^M
script (1)           - make typescript of terminal session^M
^[[01;[email protected]^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M
exit^M

Para registrar los resultados de un solo comando que no sea una sesión de shell interactiva, use -c opción.

[email protected] ~ $ script -c 'hostname' script.log

Script started, file is script.log
tecmint.com
Script done, file is script.log

Si desea que el script se ejecute en modo silencioso, puede usar -q opción. No verá un mensaje que muestre que el script se está iniciando o finalizando.

[email protected] ~ $ script -c 'who'  -q  script.log

tecmint  tty8         2015-09-16 10:45 (:0)
tecmint  pts/5        2015-09-16 13:42 (:0)

Para establecer la información de tiempo en un error estándar o en un archivo, use el –timing opción. La información de tiempo es útil cuando desea volver a mostrar la salida almacenada en el archivo de registro.

Iniciemos el script y ejecutemos los siguientes comandos w , tiempo de actividad y cal para ser grabada.

[email protected] ~ $ script --timing=time.txt script.log
Script started, file is script.log

[email protected] ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
tecmint  tty8     :0               10:45    4:26m  8:15   0.38s x-session-manager
tecmint  pts/5    :0               13:42    3.00s  0.09s  0.00s script --timing=time.txt script.log

[email protected] ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

[email protected] ~ $ cal
   September 2015     
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30    

Puede ver el script.log y hora.txt archivo para el comando de temporización anterior.

[email protected] ~ $ vi script.log
Salida de muestra
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m w^M
 15:12:05 up  4:28,  2 users,  load average: 1.31, 1.37, 1.45^M
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT^M
tecmint  tty8     :0               10:45    4:28m  8:20   0.38s x-session-manager^M
tecmint  pts/5    :0               13:42    5.00s  0.09s  0.00s script --timing=time.txt script.log^M
^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M
   September 2015     ^M
Su Mo Tu We Th Fr Sa  ^M
       1  2  3  4  5  ^M
 6  7  8  9 10 11 12  ^M
13 14 15 ^[[7m16^[[27m 17 18 19  ^M
20 21 22 23 24 25 26  ^M
27 28 29 30           ^M
                      ^M

Ahora vea time.txt archivo.

[email protected] ~ $ vi time.txt
Salida de muestra
0.259669 306
0.037680 829
0.000006 2
0.000002 100
0.000002 2
0.000002 102
0.000019 202
0.000004 2
0.000002 102
0.000015 100
0.000002 2
0.000003 2
0.000002 99
0.000011 2
0.000003 82
...

El tiempo.txt El archivo tiene dos columnas, la primera columna muestra cuánto tiempo ha transcurrido desde la última visualización y la segunda columna muestra la cantidad de caracteres que se han visualizado esta vez.

Utilice la página del manual y –ayuda para buscar más opciones y ayuda en el uso de la utilidad de línea de comandos del script.

Uso de scriptreplay para reproducir guiones usando información de tiempo

La reproducción del guión El comando ayuda a reproducir información en su log_file grabado por el script comando.

La información de tiempo está definida por -timing=file opción utilizada con el script comando y archivo en este caso es archivo.txt que se usó con el comando de script .

Recuerde que debe especificar el log_file usaste con el comando de script.

Reproduzcamos ahora los últimos tres comandos w , tiempo de actividad y cal que habíamos ejecutado de la siguiente manera.

[email protected] ~ $ scriptreplay --timing=time.txt script.log

Cuando el archivo_de_registro se reproduce utilizando la información de tiempo, los comandos grabados se ejecutan y su salida se muestra al mismo tiempo que se mostraba la salida original mientras se grababa.

Resumen

Estos dos comandos, script y reproducción de secuencias de comandos fácil de usar y ayuda mucho cuando necesita ejecutar el mismo lote de comandos varias veces. Ayudan mucho en la administración de servidores que solo tienen una interfaz de línea de comandos para interactuar con su sistema. Espero que esta guía haya sido útil y si tiene algo que agregar o enfrenta un desafío mientras los usa, no dude en publicar un comentario.


Linux
  1. Cómo grabar tu terminal Linux usando asciinema

  2. Cómo reproducir sesiones de terminal grabadas con el comando de script de Linux

  3. Cómo capturar sesiones de terminal y salida con el comando de script de Linux

  4. Grabe su terminal con script y scriptreplay

  5. Cómo establecer la prioridad del proceso de Linux usando los comandos nice y renice

Cómo reproducir las sesiones de terminal grabadas mediante el comando Scriptreplay

Cómo crear un archivo en Linux usando Terminal

Cómo grabar sesiones de terminal de Linux usando Asciinema

Cómo grabar sesiones de terminal en ubuntu

Cómo copiar archivos y directorios en la terminal de Linux

Cómo grabar audio y guardar como archivo MP3 usando Audacity