47 votes

Comment nettoyer la sortie de la commande linux 'script' ?

J'utilise la commande linux 'script'. http://www.linuxcommand.org/man_pages/script1.html pour suivre certaines sessions interactives. Les fichiers de sortie contiennent des caractères non imprimables, y compris mes frappes de retour arrière.

Existe-t-il un moyen de mettre de l'ordre dans ces fichiers de sortie afin qu'ils ne contiennent que ce qui a été affiché à l'écran ?

Ou existe-t-il un autre moyen d'enregistrer une session interactive Shell (entrée et sortie) ?

0voto

Khanan Points 1

J'ai trouvé un bon moyen de le faire. Sur mon système, les longues lignes de sortie sont parsemées de " ^M" (espace vide suivi d'un retour chariot). Le "^M" peut être joliment remplacé par le caractère nul "^@", qui ne s'affiche pas du tout lorsque vous capturez le fichier.

Je capture également le timing, donc pour rejouer le fichier parfaitement, je ne peux pas simplement supprimer complètement " ^M" en utilisant les commandes ci-dessous (parce que scriptreplay compte les octets) :

tr '\r' '\0' | sed 's/ \x0//g'

Je lance ma commande script comme suit :

script -t -f session.log 2>timing

Donc, ce que je fais ensuite, c'est.. :

cat session.log | tr '\r' '\0' > typescript 
scriptreplay -t timing | sed 's/ \x0//g'

La première édition (avant la relecture) conserve le nombre d'octets dans le fichier. La deuxième édition (après la relecture) élimine les espaces blancs à des endroits aléatoires. (Notez que par défaut, scriptreplay recherche un fichier d'entrée nommé "typescript", c'est pourquoi je ne l'ai pas indiqué après "timing").

-1voto

albert Points 1

Dos2unix sur la sortie fera également l'affaire

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X