{"id":29575,"date":"2020-09-07T23:01:42","date_gmt":"2020-09-07T21:01:42","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=29575"},"modified":"2021-02-22T12:56:04","modified_gmt":"2021-02-22T11:56:04","slug":"grabar-las-sesiones-de-terminal-en-linux","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/grabar-las-sesiones-de-terminal-en-linux\/","title":{"rendered":"Grabar las sesiones de terminal en Linux"},"content":{"rendered":"
La diferencia del comando script<\/em> respecto al comando history<\/em>, es que history<\/em> guarda el historial de los comandos, pero no muestra la salida de los comandos.<\/p>\n Con los comandos script<\/em> y typescript<\/em>, podemos llevar un registro completo de los comandos ejecutados y de la salida de los comandos, viendo la grabaci\u00f3n de toda la sesi\u00f3n.<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n La ayuda del comando script<\/em> muestra:<\/p>\n <\/p>\n <\/p>\n El comando script<\/em> es parte del paquete bsdutils<\/em> en sistemas basados en Debian, y del paquete util-linux-n<\/em>g en sistemas basados en Red Hat.<\/p>\n <\/p>\n Lo primero comprobamos si el paquete se encuentra encuentra instalado en el sistema; dependiendo de si est\u00e1 basado en CentOS o en Debian, lo comprobamos de estas formas: <\/p>\n –> CentOS\/RedHat<\/p>\n <\/p>\n Primero, para comenzar a grabar nuestra sesi\u00f3n, tecleamos el comando:<\/p>\n script<\/p>\n y comenzar\u00e1 a capturar nuestra sesi\u00f3n en un fichero con nombre: typescript<\/p>\n <\/p>\n Cuando queramos dejar de grabar la sesi\u00f3n, tecleamos:<\/p>\n <\/p>\n En esta sesi\u00f3n hemos ejecutado estos comandos:<\/p>\n <\/p>\n Despu\u00e9s hemos parado la grabaci\u00f3n de la sesi\u00f3n con:<\/p>\n <\/p>\n <\/p>\n Ahora comprobamos el contenido del fichero typescript<\/em>:<\/p>\n <\/p>\n Podemos ver c\u00f3mo se muestran todos los comandos ejecutados, y su salida por pantalla:<\/p>\n <\/p>\n <\/p>\n Y si investigamos el fichero con el editor vi, podemos ver:<\/p>\n <\/p>\n Para poder hacer esto, hemos de utilizar 2 par\u00e1metros:<\/p>\n timing<\/em> y log<\/em><\/p>\n <\/p>\n Cada uno de estos par\u00e1metros usar\u00e1 un fichero:<\/p>\n <\/p>\n <\/p>\n puede ser el nombre que queramos con extensi\u00f3n .log<\/p>\n Ahora lanzamos una sesi\u00f3n que grabe la sesi\u00f3n\u00a0 con estos dos par\u00e1metros, timing<\/em> y log<\/em>: Y en el ejemplo en nuestra m\u00e1quina:<\/p>\n Cuando haya terminado la sesi\u00f3n :<\/p>\n <\/p>\n As\u00ed se ve la grabaci\u00f3n de una sesi\u00f3n en Linux con el comando script tal como hemos explicado:<\/p>\n <\/p>\n <\/p>\n Estos dos ficheros se combinan y conseguimos reproducir as\u00ed la sesi\u00f3n con el comando scriptreplay<\/em><\/p>\n <\/p>\n <\/p>\n
\nSi est\u00e1s buscando grabar todas las sesiones de terminal de los usuarios en Linux<\/strong>, ve a esta secci\u00f3n del art\u00edculo<\/a>.
\n
\n
\n
\nPara grabar sesiones de terminal en Linux usaremos los comandos script<\/em> y para reproducir las sesiones el comando scriptreplay<\/em>.<\/p>\n\n
\n
\n
\n
\n
\n
\n–> Debian\/Ubuntu:<\/p>\n\r\ntest@Ubuntu:~$ dpkg -S \/usr\/bin\/script\r\nbsdutils: \/usr\/bin\/script\r\n<\/pre>\n
\r\n# rpm -qf \/usr\/bin\/script\r\nutil-linux-2.32.1-8.el8.x86_64\r\n\r\n# rpm -qf \/usr\/bin\/scriptreplay\r\nutil-linux-2.32.1-8.el8.x86_64\r\n<\/pre>\n
\n
\n <\/p>\nC\u00f3mo usar el comando script<\/em> para grabar las sesiones de terminal en Linux<\/strong><\/span><\/h3>\n
\r\ntest@Ubuntu:~$ script\r\nScript iniciado; el fichero es typescript\r\ntest@Ubuntu:~$ id\r\nuid=1001(test) gid=1001(test) grupos=1001(test),27(sudo)\r\ntest@Ubuntu:~$ pwd\r\n\/home\/test\r\n<\/pre>\n
\r\nexit<\/pre>\n
\r\ntest@Ubuntu:~$ exit\r\nexit\r\nScript terminado; el fichero es typescript\r\n<\/pre>\n
\r\ndate\r\nls\r\nid\r\npwd\r\nwho\r\nw\r\n<\/pre>\n
\r\nexit\r\n<\/pre>\n
\r\ncat typescript\r\n<\/pre>\n
\n
\n <\/p>\nGrabar la sesi\u00f3n de terminal en Linux junto con la info de sincronizaci\u00f3n<\/strong> (opciones timing<\/em> y log<\/em>)<\/span><\/h3>\n
\nSi grabamos la sesi\u00f3n y la info de sincronizaci\u00f3n, podremos reproducir la sesi\u00f3n a tiempo real, con los mismos tiempos que cuando ejecutamos la sesi\u00f3n.<\/p>\n\n
\n
\nAs\u00ed:<\/p>\n\r\nscript --timing=timing.txt session.log\r\n<\/pre>\n
\r\ntest@Ubuntu:~$ script --timing=sincronizacion.txt sesion.log\r\n<\/pre>\n
\r\nexit\r\nScript terminado; el fichero es sesion.log\r\n<\/pre>\n
Reproducir una sesi\u00f3n de terminal grabada en Linux con el comando scriptreplay<\/em><\/span><\/h3>\n
\nY podremos reproducir la sesi\u00f3n con el comando scriptreplay<\/em>, usando igualmente las opciones timing<\/em> y log<\/em> y los dos ficheros anteriores.<\/p>\n\r\nscriptreplay --timing=sincronizacion.txt sesion.log\r\n<\/pre>\n
C\u00f3mo grabar las sesiones de terminal para todos los usuarios del sistema en Linux<\/strong><\/span><\/h3>\n