GNU/Linux >> Tutoriels Linux >  >> Linux

Comment enregistrer et rejouer des sessions de terminal Linux à l'aide des commandes "script" et "scriptreplay"

Dans ce guide, nous allons voir comment utiliser un script et scriptreplay commandes sous Linux qui peuvent vous aider à enregistrer les commandes et leur sortie imprimée sur votre terminal au cours d'une session donnée.

La commande history est un excellent utilitaire de ligne de commande qui aide les utilisateurs à stocker la commande précédente utilisée, bien qu'elle ne stocke pas la sortie d'une commande.

Don' t Mlle : Showterm.io - Un outil d'enregistrement de terminal Linux

Don' t Mlle : 8 meilleurs enregistreurs d'écran de bureau pour Linux

Par conséquent, le script La commande est pratique pour vous fournir une fonctionnalité puissante qui vous aide à enregistrer tout ce qui est imprimé sur votre terminal dans un log_file . Vous pouvez ensuite vous référer à ce fichier plus tard au cas où vous voudriez voir la sortie d'une commande dans l'historique à partir du log_file .

Vous pouvez également rejouer les commandes que vous avez enregistrées à l'aide du scriptreplay commande en utilisant une information de synchronisation.

Comment enregistrer un terminal Linux à l'aide de la commande de script

Le script la commande stocke les activités du terminal dans un fichier journal qui peut être nommé par un utilisateur, lorsqu'un nom n'est pas fourni par un utilisateur, le nom de fichier par défaut, typescript est utilisé.

Syntaxe de base de la commande de script
# script [options] - -timing=timing_file log_filename

Pour démarrer l'enregistrement du terminal Linux, tapez script et ajoutez le journal filename comme indiqué.

[email protected] ~ $ script history_log.txt

Script started, file is history_log.txt

Pour arrêter le script , tapez quitter et appuyez sur [Entrée] .

[email protected] ~ $ exit

Script done, file is history_log.txt

Si le script ne peut pas écrire dans le fichier journal nommé, il affiche une erreur.

Par exemple, dans la sortie ci-dessous, les permissions du fichier typescript n'autorise pas la lecture, l'écriture et l'exécution du fichier par un utilisateur ou un groupe. Lorsque vous exécutez la commande de script sans nom de fichier journal, elle tente d'écrire dans le fichier par défaut, typescript montrant donc une erreur.

[email protected] ~ $ ls -l typescript

--------- 1 ubuntu ubuntu 144 Sep 15 00:00 typescript

[email protected] ~ $ script

script: open failed: typescript: Permission denied
Terminated

Exemples d'utilisation de la commande de script

J'ai nommé mon fichier journal script.log dans l'exemple ci-dessous, vous pouvez donner un nom différent à votre fichier.

[email protected] ~ $ script script.log

Essayez maintenant d'exécuter quelques commandes pour permettre au script d'enregistrer les commandes exécutées sur le terminal.

[email protected] ~ $ cal

   September 2015     
Su Mo Tu We Th Fr 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           
                      
[email protected] ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
tecmint  tty8     :0               10:45    4:06m  7:40   0.36s x-session-manager
tecmint  pts/5    :0               13:42    4.00s  0.07s  0.00s script script.log

[email protected] ~ $ uptime

 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62

[email protected] ~ $ whoami

tecmint

[email protected] ~ $ echo 'using script'

using script
[email protected] ~ $ exit
exit
Script done, file is script.log

Essayez maintenant d'afficher le fichier journal 'script.log ' pour toutes les commandes enregistrées, lorsque vous affichez le journal, vous vous rendez compte que le script stocke également les sauts de ligne et les retours arrière.

[email protected] ~ $ vi script.log
Exemple de sortie
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M
   September 2015     ^M
Su Mo Tu We Th Fr Sa  ^M
       1  2  3  4  5  ^M
 6  7  8  9 10 11 12  ^M
13 14 15 ^[[7m16^[[27m 17 18 19  ^M
20 21 22 23 24 25 26  ^M
27 28 29 30           ^M
                      ^M
^[[01;[email protected]^[[01;34m ~ $^[[00m w^M
 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT^M
tecmint  tty8     :0               10:45    4:06m  7:40   0.36s x-session-manager^M
tecmint  pts/5    :0               13:42    4.00s  0.07s  0.00s script script.log^M
^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M
 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whoami^M
tecmint^M
^[[01;[email protected]^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M
using script^M
^[[01;[email protected]^[[01;34m ~ $^[[00m exit^M
exit^M

Script done on Wednesday 16 September 2015 02:49:59 PM IST
~                                                              

Vous pouvez utiliser le -a possibilité d'ajouter le fichier journal ou le texte dactylographié, en conservant le contenu précédent.

[email protected] ~ $ script -a script.log
Script started, file is script.log

[email protected] ~ $ date
Wed Sep 16 14:59:36 IST 2015


[email protected] ~ $ pwd
/home/tecmint


[email protected] ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz


[email protected] ~ $ whatis script
script (1)           - make typescript of terminal session

Afficher le contenu du script, se connecter après avoir utilisé -a possibilité de l'ajouter.

[email protected] ~ $ vi script.log
Exemple de sortie
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m date^M
Wed Sep 16 14:59:36 IST 2015^M
^[[01;[email protected]^[[01;34m ~ $^[[00m pwd^M
/home/tecmint^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whre^H^[[K^H^[[Kereis script^M
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz^M
^[[01;[email protected]^[[01;34m ~ $^[[00m whatis script^M
script (1)           - make typescript of terminal session^M
^[[01;[email protected]^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M
exit^M

Pour enregistrer les résultats d'une seule commande autre qu'une session shell interactive, utilisez le -c option.

[email protected] ~ $ script -c 'hostname' script.log

Script started, file is script.log
tecmint.com
Script done, file is script.log

Si vous voulez que le script s'exécute en mode silencieux, vous pouvez utiliser le -q option. Vous ne verrez pas de message indiquant que le script démarre ou se termine.

[email protected] ~ $ script -c 'who'  -q  script.log

tecmint  tty8         2015-09-16 10:45 (:0)
tecmint  pts/5        2015-09-16 13:42 (:0)

Pour définir les informations de synchronisation sur l'erreur standard ou un fichier, utilisez le –timing option. Les informations de synchronisation sont utiles lorsque vous souhaitez réafficher la sortie stockée dans le log_file.

Commençons le script et exécutons les commandes suivantes w , temps de disponibilité et cal à enregistrer.

[email protected] ~ $ script --timing=time.txt script.log
Script started, file is script.log

[email protected] ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
tecmint  tty8     :0               10:45    4:26m  8:15   0.38s x-session-manager
tecmint  pts/5    :0               13:42    3.00s  0.09s  0.00s script --timing=time.txt script.log

[email protected] ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

[email protected] ~ $ cal
   September 2015     
Su Mo Tu We Th Fr 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    

Vous pouvez afficher le script.log et time.txt fichier pour la commande de synchronisation ci-dessus.

[email protected] ~ $ vi script.log
Exemple de sortie
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m w^M
 15:12:05 up  4:28,  2 users,  load average: 1.31, 1.37, 1.45^M
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT^M
tecmint  tty8     :0               10:45    4:28m  8:20   0.38s x-session-manager^M
tecmint  pts/5    :0               13:42    5.00s  0.09s  0.00s script --timing=time.txt script.log^M
^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M
   September 2015     ^M
Su Mo Tu We Th Fr Sa  ^M
       1  2  3  4  5  ^M
 6  7  8  9 10 11 12  ^M
13 14 15 ^[[7m16^[[27m 17 18 19  ^M
20 21 22 23 24 25 26  ^M
27 28 29 30           ^M
                      ^M

Affichez maintenant time.txt fichier.

[email protected] ~ $ vi time.txt
Exemple de sortie
0.259669 306
0.037680 829
0.000006 2
0.000002 100
0.000002 2
0.000002 102
0.000019 202
0.000004 2
0.000002 102
0.000015 100
0.000002 2
0.000003 2
0.000002 99
0.000011 2
0.000003 82
...

Le time.txt Le fichier a deux colonnes, la première colonne montre combien de temps s'est écoulé depuis le dernier affichage et la deuxième colonne, montre le nombre de caractères qui ont été affichés cette fois-ci.

Utilisez la page de manuel et –help pour rechercher plus d'options et de l'aide pour utiliser l'utilitaire de ligne de commande de script.

Utilisation de scriptreplay pour rejouer des scripts à l'aide d'informations temporelles

Le scriptreplay La commande aide à relire les informations dans votre log_file enregistré par le script commande.

Les informations de temps sont définies par le -timing=file option utilisée avec le script commande et fichier dans ce cas est file.txt qui a été utilisé avec la commande de script .

N'oubliez pas que vous devez spécifier le log_file que vous avez utilisé avec la commande de script.

Rejouons maintenant les trois dernières commandes w , temps de disponibilité et cal que nous avions exécuté comme suit.

[email protected] ~ $ scriptreplay --timing=time.txt script.log

Lorsque le fichier journal rejouées à l'aide des informations de synchronisation, les commandes enregistrées sont exécutées et leur sortie est affichée en même temps que la sortie d'origine était affichée lors de l'enregistrement.

Résumé

Ces deux commandes, script et scriptreplay facile à utiliser et très utile lorsque vous devez exécuter plusieurs fois le même lot de commandes. Ils aident beaucoup à gérer les serveurs qui n'ont qu'une interface de ligne de commande pour interagir avec votre système. J'espère que ce guide vous a été utile et si vous avez quelque chose à ajouter ou si vous rencontrez un défi lors de leur utilisation, n'hésitez pas à poster un commentaire.


Linux
  1. Comment enregistrer votre terminal Linux en utilisant asciinema

  2. Comment rejouer les sessions de terminal enregistrées avec la commande de script Linux

  3. Comment capturer les sessions de terminal et la sortie avec la commande de script Linux

  4. Enregistrez votre terminal avec script et scriptreplay

  5. Comment quitter le terminal Linux en utilisant le script Python ?

Comment rejouer les sessions de terminal enregistrées à l'aide de la commande Scriptreplay

Comment créer un fichier sous Linux à l'aide de Terminal

Comment enregistrer des sessions de terminal Linux à l'aide d'Asciinema

Comment enregistrer des sessions de terminal dans Ubuntu

Comment copier des fichiers et des répertoires dans un terminal Linux

Comment enregistrer de l'audio et l'enregistrer en tant que fichier MP3 avec Audacity