Cómo clonar y reproducir una sesión bash
- Detalles
- Categoría: Gurú
- Creado en Martes, 05 Febrero 2013 10:45
- Visitas: 225
Muchas veces debemos realizar una tarea de mantenimiento en un servidor que involucra una cantidad de pasos, suele ser muy compleja, y a su vez requerir una cantidad importante de comandos. Si además se trata de un servidor crítico, debemos realizarla en el menor tiempo posible para no afectar a los usuarios y servicios. Como buen administrador de sistemas (sysadmin, en la jerga de los informáticos) uno debe documentar metódicamente todo lo que hace. He aquí el problema en estas situaciones, se debe realizar una tarea compleja en tiempo récord lo cual impide documentar mientras se ejecuta la tarea (lo que recomiendan todas las metodologías de gestión de tecnologías de la información). Es decir, no hay tiempo para cargar contenido en una Wiki, no hay tiempo para documentar. Al menos no hay tiempo para documentar mientras se ejecuta la tarea. Entonces no queda otra alternativa que documentar una vez finalizado, testeado y cerrado el caso, o peor, cuando tenga tiempo. El resultado es que la documentación termina siendo pobre, y muchas veces se pierden pasos y/o detalles importantes que afectan de forma crítica el éxito de la misión.
Lamentablemente esta situación se repite a diario en la mayoría de los colegas sysadmins, quienes están tan saturados de trabajo que directamente nunca tienen tiempo para documentar nada (la documentación no es una prioridad para la Gerencia, gran error). Luego la empresa (o al menos la gestión de IT) para la cual trabaja Pepe (suponiendo que Pepe es el sysadmin) se vuelve Pepe-dependiente. A esta altura ya me fui por las ramas, estoy detallando aspectos de una mala gestión de IT, en lugar del tema que presenta el título.
Volviendo al punto, este artículo describe el uso de una excelente herramienta que me ayudó a documentar en muchas ocasiones. La pregunta para afrontar el problema de forma exitosa es: "¿Cómo hago para guardar todo lo que escribí en la línea de comandos, incluyendo las salidas de los mismos, sin tener que copiar y pegar constantemente?". La respuesta es simple: utilizar el comando script.
El comando script guarda todo lo que se imprime en una terminal, es útil para estudiantes que necesitan un registro de una sesión interactiva como prueba de una asignación o tarea. Utilizando este comando es posible guardar una sesión para no pasar por alto ningún detalle importante al momento de realizar una documentación.
La forma más simple de utilizar script es la siguiente:
script -a sesion.txt
El parámetro -a indica el nombre del archivo donde se guardará la sesión. Para finalizar la grabación es posible utilizar el comando exit o presionar la combinación de teclas ^D (Ctrl+D). De esta forma podemos guardar un registro de todo lo que se imprimió en la línea de comandos para posterior análisis.
Si se desea revisar la sesión guardada es posible hacerlo, por ejemplo, mediante:
cat sesion.txt more sesion.txt
Como con cualquier archivo de texto, podemos buscar patrones utilizando grep.
script también es útil para telecooperación. Es posible clonar una sesión interactiva para ser reproducida en otra terminal. Por ejemplo, si deseamos que otra persona en una terminal remota pueda ver nuestra sesión interactiva en tiempo real, se debe:
En la terminal remota
- Abrir un puerto aleatorio y redirigir el contenido a un archivo (en background):
nc -l 500 > sesion.txt &
- Reproducir el archivo:
tail -f sesion.txt
De esta forma, la terminal remota (aunque es posible realizar el mismo procedimiento para diferentes sesiones en una misma terminal, omitiendo el uso de netcat) está lista para ver en tiempo real la sesión interactiva que se va a "clonar". A continuación:
En la terminal local
- Crear un archivo vacío y reenviar su contenido a la terminal remota (192.168.122.196 en el ejemplo), conectandose al puerto correspondiente (500):
touch consola.txt tail -f consola.txt | nc 192.168.122.196 500 &
- Ejecutar el comando
scriptcon la opción-fpara que vuelque la salida en cada escritura:script -fa consola.txt
A partir de este momento todo lo que se tipee, junto con las salidas, será reenviado a la terminal remota.
El siguiente video muestra un ejemplo del comando script en acción:
Sponsor
Hits Recientes
- Metiendo mano en el hardware hace 2 minutos
- Convertir video a formato avi utilizando mencoder hace 2 minutos
- Obtener una dirección IP a partir de una dirección MAC hace 3 minutos
- Cómo ver el tráfico de la red con wireshark hace 6 minutos
- Por qué no utilizar 000webhost.com hace 6 minutos
- Google Apps deja de ser gratuito hace 6 minutos
- Estadísticas 2012 hace 6 minutos
- Cómo desinstalar JDownloader en GNU/Linux hace 8 minutos
- Datacenter de Google visto desde adentro hace 9 minutos
- Eliminar GPT (GUID Partition Table) hace 12 minutos
Sponsor
Más Leído
- Virtualización en CentOS 6.2 utilizando KVM (3340)
- Instalación y configuración de OpenVPN (3046)
- "ps aux" explicado (2380)
- Instalar samba en CentOS 6.2 (2309)
- Por qué no utilizar 000webhost.com (2096)
- Cómo configurar el proxy en Ubuntu Server 12.04 (1973)
- Utilizar SPICE en máquinas virtuales KVM (1949)
- Compiz-fusion en CentOS 6.3 (1919)
- Acceso remoto a máquinas virtuales KVM utilizando el cliente SPICE (1770)
- Cómo configurar Samba en Red Hat/CentOS (1722)


