Guardar sesión terminal Linux (script)

Durante el trabajo diario, en ocasiones, debemos realizar tareas que nos gustaría documentar como es debido.entrada Linux script

En esta entrada vamos a ver como guardar toda una sesión de terminal Linux, de tal forma que podamos incluirla a posteriori en cualquier documentación.

El comando que vamos utilizar es:

script

Normalmente las distribuciones Linux más populares lo tienen instalado por defecto.

En este enlace podemos ver la pagina man:

http://www.unix.com/man-page/centos/1/script/

La sintaxis es:

 script [-a] [-c COMMAND] [-f] [-q] [-t] [file]

Vamos a ver solo 2 parámetros:

  • file, indica donde se guardará la captura de los comandos ejecutados.
  • -a, indica que se añada a un archivo ya existente.

Si es ejecutado sin parámetros es generado un fichero con nombre typescript, que incluye todo lo ejecutado.

Este comando guarda en el fichero en cuestión:

  • La entrada estandar, stdin
  • La salida estandar, stdout
  • La salida de error, stderr
  • Cualquier otro carácter especial, pulsaciones, del cursor, retornos de carro, tabuladores, etc… Veremos depués como obtener una salida más limpia.

Pongamos un ejemplo:

Source   
[oracle@oradb soft]$ ls
temp.txt
[oracle@oradb soft]$ script captura.txt
Script started, file is captura.txt
[oracle@oradb soft]$ ls -la
total 12
drwxr-xr-x  2 oracle oinstall 4096 Nov 20 22:17 .
drwx------ 28 oracle oinstall 4096 Nov 20 22:16 ..
-rw-r--r--  1 oracle oinstall    0 Nov 20 22:17 captura.txt
-rw-r--r--  1 oracle oinstall   33 Nov 20 22:16 temp.txt
[oracle@oradb soft]$ cat temp.txt
This is a test file.
End of file
[oracle@oradb soft]$ grep End temp.txt
End of file
[oracle@oradb soft]$ exit
exit
Script done, file is captura.txt
[oracle@oradb soft]$ ls
captura.txt  temp.txt

Ahora tenemos un fichero llamado «captura.txt» con todo lo ejecutado, si lo editamos con vi por ejemplo veremos muchos carácteres especiales que ensucian la salida, esto es porque he borrado varias veces y vuelto a escribir.

El contenido de «captura.txt» visto con vi es:

Source   
Script started on Fri 20 Nov 2015 10:17:07 PM CET
^[]0;oracle@oradb:~/soft^G^[[?1034h[oracle@oradb soft]$ ls -la^M
total 12^M
drwxr-xr-x  2 oracle oinstall 4096 Nov 20 22:17 ^[[0m^[[01;34m.^[[0m^M
drwx------ 28 oracle oinstall 4096 Nov 20 22:16 ^[[01;34m..^[[0m^M
-rw-r--r--  1 oracle oinstall    0 Nov 20 22:17 captura.txt^M
-rw-r--r--  1 oracle oinstall   33 Nov 20 22:16 temp.txt^M
^[[m^[]0;oracle@oradb:~/soft^G[oracle@oradb soft]$ cat c^H^[[Ktemp.txt ^M
This is a test file.^M
End of file^M
^[]0;oracle@oradb:~/soft^G[oracle@oradb soft]$ grep End | ^H^[[K^H^[[Kcaptura.txt^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[Kcaptura.txt^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[Ktemp.txt^M
End of file^M
^[]0;oracle@oradb:~/soft^G[oracle@oradb soft]$ exit^M
exit^M
 
Script done on Fri 20 Nov 2015 10:17:44 PM CET

Un desastre vamos, para obtener una salida más limpia podemos hacerlo simplemente con cat:

Source   
[oracle@oradb soft]$ cat captura.txt
Script started on Fri 20 Nov 2015 10:17:07 PM CET
[oracle@oradb soft]$ ls -la
total 12
drwxr-xr-x  2 oracle oinstall 4096 Nov 20 22:17 .
drwx------ 28 oracle oinstall 4096 Nov 20 22:16 ..
-rw-r--r--  1 oracle oinstall    0 Nov 20 22:17 captura.txt
-rw-r--r--  1 oracle oinstall   33 Nov 20 22:16 temp.txt
[oracle@oradb soft]$ cat temp.txt
This is a test file.
End of file
[oracle@oradb soft]$ grep End temp.txt
End of file
[oracle@oradb soft]$ exit
exit
 
Script done on Fri 20 Nov 2015 10:17:44 PM CET

Ahora la salida es perfecta, ahora solo necesitamos las ganas de documentar 🙂

Deja un comentario