Enregistrer sa session avec scriptreplay

Je viens de découvrir un outil fantastisque qui permet d'enregistrer les commandes que vous passez sous la console ainsi que les résultats de ces commandes : script

Vous savez que les commandes que vous passez sous la console sont enregistrées dans le fichier .bash_history. Il est possible de les afficher via la commande "history" sur laquelle vos pouvez réaliser des grep. Vous pouvez aussi rechercher dans votre historique via la commande "Ctrl + r" en saisissant ensuite le début de la commande recherchée.

Pour utilisez script saisissez simplement la commande suivante sous la console :

$ script script.log

Il n'est pas obligatoire de préciser le nom du fichier de log. A défaut il s'appellera "typescript".

Saisissez ensuite vos commandes : cal, w et uptime par exemple. Saisissez enfin "exit" pour quitter le mode enregistrement.

Affichons maintenant le fichier script.log :

$ cat script.log 

 

Le script a débuté sur jeu. 07 juil. 2016 12:51:31 CEST

$ cal

    Juillet 2016      

di lu ma me je ve 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  

31                    

$ w

 12:51:40 up  4:38,  1 user,  load average: 0,09, 0,17, 0,13

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

jfdigonn :0       :0               08:14   ?xdm?  21:05   0.55s init --user

$ uptime

 12:51:44 up  4:39,  1 user,  load average: 0,08, 0,17, 0,13

$ uptime -s

2016-07-07 08:12:44

$ exit

exit

 

 

Script terminé sur jeu. 07 juil. 2016 12:51:56 CEST

 

Si vous voulez reprendre le script en gardant le même fichier log saisissez :

$ script -a script.log

Vous pouvez vous servir de script pour récupérer le résultat d'une commande. Exemple :

$ script -c 'hostname' script.log

Le script a débuté, le fichier est script.log

jfdigonnet-DT55

Script terminé, le fichier est script.log

 

$ cat script.log 

Le script a débuté sur jeu. 07 juil. 2016 12:59:53 CEST

jfdigonnet-DT55

 

Script terminé sur jeu. 07 juil. 2016 12:59:53 CEST

 

Pour un mode moins verbeux :

$ script -c 'hostname' -q script.log

jfdigonnet-DT55

 

$ cat script.log 

Le script a débuté sur jeu. 07 juil. 2016 13:02:18 CEST

 

jfdigonnet-DT55

Ca gagne un peu.

Il est possible de retenir aussi les temps d'exécution et de réalisation des commandes. Cela ne parait pas mais on verra ensuite à quoi cela peut servir. Exemple de commande :

$ script --timing=time.txt script.log 

On obtient donc un fichier des commandes et  résultats et un fichier des temps.

$ head time.txt

0.076720 64

0.062291 1

2.013912 1

0.287737 1

0.920119 2

0.776976 46

0.002462 83

0.000011 70

0.000066 2

0.000008 64

Voici le plus fort: on peut rejouer ces fichiers. On ne vas relancer les commandes mais les réafficher et afficher les mêmes résultats de la même manière que cela s'est produit la première fois :

scriptreplay --timing=time.txt script.log

Voici ce que cela peut donner :

Fait le 07/07/2016