Aprenda a grabar y reproducir la actividad de las sesiones de terminal de Linux

Generalmente, todos los administradores de Linux usan historia comando para rastrear qué comandos se ejecutaron en sesiones anteriores, pero hay una limitación del comando de historial que no almacena la salida del comando. Puede haber algunos escenarios en los que queramos verificar la salida de los comandos de la sesión anterior y queramos compararla con la sesión actual. Aparte de esto, hay algunas situaciones en las que estamos solucionando problemas en las cajas de producción de Linux y queremos guardar todas las actividades de la sesión de terminal para referencia futura, por lo que en tales casos, el comando de secuencia de comandos se vuelve útil.

Script es una herramienta de línea de comandos que se utiliza para capturar o grabar la actividad de las sesiones de la terminal del servidor Linux y luego la sesión grabada se puede reproducir usando el comando scriptreplay. En este artículo, demostraremos cómo instalar la herramienta de línea de comando de script y cómo registrar la actividad de la sesión del terminal del servidor Linux y luego veremos cómo se puede reproducir la sesión grabada usando scriptreplay mando.

Instalación de la herramienta Script en RHEL 7/ CentOS 7

El comando de secuencia de comandos lo proporciona el paquete rpm “util-linux”, en caso de que no esté instalado en su sistema CentOS 7/RHEL 7, ejecute el siguiente comando yum,

[[email protected] ~]# yum install util-linux -y

En RHEL 8 / CentOS 8

Ejecute el siguiente comando dnf para instalar la utilidad de script en el sistema RHEL 8 y CentOS 8,

[[email protected] ~]# dnf install util-linux -y

Instalación de la herramienta Script en sistemas basados ​​en Debian (Ubuntu / Linux Mint)

Ejecute el siguiente comando apt-get para instalar la utilidad de secuencia de comandos

[email protected] ~]# apt-get install util-linux -y

Cómo usar la utilidad de script

El uso del comando de secuencia de comandos es sencillo, escriba el comando de secuencia de comandos en la terminal y luego presione Intro, comenzará a capturar las actividades de su sesión de terminal actual dentro de un archivo llamado «mecanografiado

[[email protected] ~]# script
Script started, file is typescript
[[email protected] ~]#

Para dejar de registrar las actividades de la sesión, escriba el comando de salida y presione enter.

[[email protected] ~]# exit
exit
Script done, file is typescript
[[email protected] ~]#

Sintaxis del comando Script:

~ ] # script {options}  {file_name}

Diferentes opciones utilizadas en el comando de secuencia de comandos,

opciones-script-comando

Comencemos a grabar su sesión de terminal de Linux ejecutando el comando de secuencia de comandos y luego ejecute un par de comandos como ‘w‘, ‘ruta -n‘ , ‘df-h‘ y ‘libre-h‘, el ejemplo se muestra a continuación

script-ejemplos-linux-servidor

Como podemos ver arriba, los registros de sesión de terminal se guardan en el archivo «mecanografiado»

Ahora vea el contenido del archivo mecanografiado usando el comando cat / vi,

[[email protected] ~]# ls -l typescript
-rw-r--r--. 1 root root 1861 Jun 21 00:50 typescript
[[email protected] ~]#

mecanografiado-archivo-contenido-linux

Lo anterior confirma que todos los comandos que ejecutamos en la terminal que se han guardado dentro del archivo «mecanografiado»

Use el nombre de archivo personalizado en el comando de secuencia de comandos

Supongamos que queremos usar nuestro nombre de archivo personalizado para el comando de secuencia de comandos, así que especifique el nombre de archivo después del comando de secuencia de comandos, en el siguiente ejemplo estamos usando un nombre de archivo «sesión-registro-(fecha-hora-actual).txt»

[[email protected] ~]# script sessions-log-$(date +%d-%m-%Y-%T).txt
Script started, file is sessions-log-21-06-2019-01:37:39.txt
[[email protected] ~]#

Ahora ejecute los comandos y luego escriba exit,

[[email protected] ~]# exit
exit
Script done, file is sessions-log-21-06-2019-01:37:39.txt
[[email protected] ~]#

Agregue la salida de los comandos al archivo de script

Supongamos que el comando de secuencia de comandos ya había registrado la salida de los comandos en un archivo llamado archivo session-log.txt y ahora queremos agregar la salida de los comandos de nuevas sesiones a este archivo, luego use «-aComando ” en el comando de secuencia de comandos

[[email protected] ~]# script -a sessions-log.txt
Script started, file is sessions-log.txt
[[email protected] ~]# xfs_info /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=2746624 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=10986496, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5364, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]# exit
exit
Script done, file is sessions-log.txt
[[email protected] ~]#

Para ver los registros de sesión actualizados, use «cat session-log.txt»

Capture la salida de comandos a un archivo de secuencia de comandos sin shell interactivo

Supongamos que queremos capturar la salida de los comandos en un archivo de script, luego usemos -C opción, el ejemplo se muestra a continuación,

[[email protected] ~]# script -c "uptime && hostname && date" root-session.txt
Script started, file is root-session.txt
 01:57:40 up  2:30,  3 users,  load average: 0.00, 0.01, 0.05
linuxtechi
Fri Jun 21 01:57:40 EDT 2019
Script done, file is root-session.txt
[[email protected] ~]#

Ejecutar comando de script en modo silencioso

Para ejecutar el comando de script en modo silencioso, use -q opción, esta opción suprimirá el mensaje de secuencia de comandos iniciada y secuencia de comandos finalizada, el ejemplo se muestra a continuación,

[[email protected] ~]# script -c "uptime && date" -q root-session.txt
 02:01:10 up  2:33,  3 users,  load average: 0.00, 0.01, 0.05
Fri Jun 21 02:01:10 EDT 2019
[[email protected] ~]#

Registre la información de tiempo en un archivo y capture la salida de los comandos en un archivo separado, esto se puede lograr en el comando de secuencia de comandos pasando el archivo de tiempo (-momento), el ejemplo se muestra a continuación,

Sintaxis:

~ ]# script -t {nombre_archivo}

[[email protected] ~]# script --timing=timing.txt session.log
Script started, file is session.log
[[email protected] ~]# uptime
 02:27:59 up  3:00,  3 users,  load average: 0.00, 0.01, 0.05
[[email protected] ~]# date
Fri Jun 21 02:28:02 EDT 2019
[[email protected] ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        171M        2.0G        8.6M        1.7G        3.3G
Swap:          3.9G          0B        3.9G
[[email protected] ~]# whoami
root
[[email protected] ~]# exit
exit
Script done, file is session.log
[[email protected] ~]#
[[email protected] ~]# ls -l session.log timing.txt
-rw-r--r--. 1 root root 673 Jun 21 02:28 session.log
-rw-r--r--. 1 root root 414 Jun 21 02:28 timing.txt
[[email protected] ~]#

Reproducir actividad de sesión de terminal Linux registrada

Ahora reproduzca las actividades grabadas de la sesión de terminal usando el comando scriptreplay,

Nota: Scriptreplay también es proporcionado por el paquete rpm “util-linux”. El comando Scriptreplay requiere un archivo de temporización para funcionar.

[[email protected] ~]# scriptreplay --timing=timing.txt session.log

La salida del comando anterior sería algo como a continuación,

scriptreplay-linux

Registre todas las actividades de sesión de terminal de Linux del usuario

Hay algunos servidores Linux críticos para el negocio en los que queremos realizar un seguimiento de la actividad de todos los usuarios, por lo que esto se puede lograr mediante el comando de secuencia de comandos, coloque el siguiente contenido en el archivo /etc/profile,

[[email protected] ~]# vi /etc/profile
……………………………………………………
if [ "x$SESSION_RECORD" = "x" ]
then
timestamp=$(date +%d-%m-%Y-%T)
session_log=/var/log/session/session.$USER.$$.$timestamp
SESSION_RECORD=started
export SESSION_RECORD
script -t -f -q 2>${session_log}.timing $session_log
exit
fi
……………………………………………………

Guardar y salir del archivo.

Cree el directorio de la sesión en la carpeta /var/log,

[[email protected] ~]# mkdir /var/log/session

Asigne los permisos a la carpeta de sesión,

[[email protected] ~]# chmod 777 /var/log/session/
[[email protected] ~]#

Ahora verifique si el código anterior funciona o no. Inicie sesión como usuario ordinario en el servidor Linux, en mi estoy usando el usuario pkumar,

~ ] # ssh [email protected]
[email protected]'s password:
[[email protected] ~]$ uptime
 04:34:09 up  5:06,  3 users,  load average: 0.00, 0.01, 0.05
[[email protected] ~]$ date
Fri Jun 21 04:34:11 EDT 2019
[[email protected] ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        172M        2.0G        8.6M        1.7G        3.3G
Swap:          3.9G          0B        3.9G
[[email protected] ~]$ id
uid=1001(pkumar) gid=1002(pkumar) groups=1002(pkumar)  
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[[email protected] ~]$ whoami
pkumar
[[email protected] ~]$ exit
Login as root and view user’s linux terminal session activity

[[email protected] ~]# cd /var/log/session/
[[email protected] session]# ls -l | grep pkumar
-rw-rw-r--. 1 pkumar pkumar 870 Jun 21 04:34 
session.pkumar.19785.21-06-2019-04:34:05
-rw-rw-r--. 1 pkumar pkumar 494 Jun 21 04:34  
session.pkumar.19785.21-06-2019-04:34:05.timing
[[email protected] session]#

Sesión-archivo-de-salida-linux

También podemos usar el comando scriptreplay para reproducir las actividades de la sesión de terminal del usuario,

[[email protected] session]# scriptreplay --timing 
session.pkumar.19785.21-06-2019-04:34:05.timing 
session.pkumar.19785.21-06-2019-04:34:05

Eso es todo de este tutorial, por favor comparta sus comentarios y comentarios en la sección de comentarios a continuación.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *