Un pense-bête

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