Site original : Sam & Max: Python, Django, Git et du cul
Combien de fois, durant une formation, on m’a demandé si je pouvais donner un dump de la session shell.
playitagainsam, ou PIAS, a exactement pour but de faire cela: il lance un shell, enregistre ce qu’on y a tapé, et quand on quitte le shell, sauvegarde le tout dans un fichier. Ensuite, on peut lire le contenu du fichier et revoir la session shell telle qu’elle a été tapée.
C’est un programme Python, on peut donc le pip installer :
pip install playitagainsam --user
Ensuite, on lance une session à enregistrer avec la sous commande record :
pias record nom_du_fichier_ou_sauver_l_enregistrement
PIAS va lancer un nouveau shell, par défaut le même que votre shell actuel (souvent bash, pour moi fish), mais vous pouvez préciser un type de shell spécial avec --shell
. Ex :
pias record ex1 --shell ipython
A partir de là il n’y a rien à faire. On peut travailler normalement et oublier qu’on a utilisé PIAS. Une fois qu’on a terminé sa petite affaire, il suffit de sortir du shell (CTRL + D, exit, etc), et la session va être sauvegardée dans un format JSON facile à corriger à la main si vous souhaitez la rendre plus agréable :
{ "events": [ { "act": "OPEN", "size": [ 162, 33 ], "term": "1c53f048e3a74984b2a93af175e24e87" }, { "act": "PAUSE", "duration": 0.10042214393615723 }, { "act": "WRITE", "data": "\u001b]0;sam@sametmax.com: /tmp\u0007sam@sametmax.com:/tmp$ ", "term": "1c53f048e3a74984b2a93af175e24e87" }, { "act": "ECHO", "data": "touch essai", "term": "1c53f048e3a74984b2a93af175e24e87" ... }
Quand vous voulez rejouer la session :
pias play fichier_d_enregistrement
Par défaut il faut appuyer sur une touche quelconque du clavier pour voir apparaitre chaque caractère, donnant l’impression que vous êtes un hacker de Hollywood. C’est rigolo, mais parfaitement chiant à la longue. On peut faire jouer la session automatiquement avec l’option --auto-type
qui va taper chaque ligne automatiquement. Il suffira alors d’appuyer sur entrée à chaque ligne pour avoir le résultat suivant. C’est mon mode préféré.
Si vous êtes un gros feignant, vous pouvez tout jouer en automatique en rajoutant l’option --auto-waypoint
qui va vous dispenser de taper entrée à chaque fin de ligne. Ex :
pias play ex1 --auto-type --auto-waypoint
La session jouée est simulée. Elle n’a aucun impacte sur le système. Si vous faites un mkdir
dans bash ou un shutil.rmtree
dans python, ça ne fera rien.
Néanmoins, parfois il est utile d’avoir le effets réels des commandes. Dans ce cas on peut utiliser --live-replay
. Attention, faites bien gaffe à ce que vous allez jouer…
playitagainsam est intéressant pour tout ce qui est formation et tutorial, d’autant plus qu’il existe un player javascript pour faire la démonstration de vos sessions shell sur un blog ou un slideshow.