GNU/Linux >> Linux Esercitazione >  >> Linux

Come registrare e riprodurre sessioni del terminale Linux utilizzando i comandi "script" e "scriptreplay".

In questa guida vedremo come utilizzare uno script e sceneggiatura comandi in Linux che possono aiutarti a registrare i comandi e il loro output stampato sul tuo terminale durante una determinata sessione.

Il comando history è un'ottima utility da riga di comando che aiuta gli utenti a memorizzare il comando precedente utilizzato, sebbene non memorizzi l'output di un comando.

Don' t Signorina: Showterm.io – Uno strumento di registrazione del terminale Linux

Don' t Signorina: 8 migliori registratori di schermo desktop per Linux

Quindi lo script comando è utile per fornirti una potente funzionalità che ti aiuta a registrare tutto ciò che viene stampato sul tuo terminale in un file_log . Puoi quindi fare riferimento a questo file in seguito nel caso in cui desideri visualizzare l'output di un comando nella cronologia dal file_log .

Puoi anche riprodurre i comandi che hai registrato utilizzando scriptreplay comando utilizzando un'informazione di temporizzazione.

Come registrare un terminale Linux usando il comando script

Il script comando memorizza le attività del terminale in un file di registro che può essere nominato da un utente, quando un nome non è fornito da un utente, il nome del file predefinito, dattiloscritto viene utilizzato.

Sintassi di base del comando script
# script [options] - -timing=timing_file log_filename

Per avviare la registrazione del terminale Linux, digita script e aggiungi il log nomefile come mostrato.

[email protected] ~ $ script history_log.txt

Script started, file is history_log.txt

Per interrompere script , digita esci e premi [Invio] .

[email protected] ~ $ exit

Script done, file is history_log.txt

Se lo script non può scrivere nel file di registro denominato, mostra un errore.

Ad esempio, nell'output seguente, i permessi del file dattiloscritto non consente la lettura, la scrittura e l'esecuzione del file da parte di nessun utente o gruppo. Quando esegui il comando script senza un nome di file di registro, tenta di scrivere nel file predefinito, dattiloscritto quindi mostrando un errore.

[email protected] ~ $ ls -l typescript

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

[email protected] ~ $ script

script: open failed: typescript: Permission denied
Terminated

Esempi di utilizzo del comando script

Ho chiamato il mio file di registro script.log nell'esempio seguente, puoi assegnare al tuo file un nome diverso.

[email protected] ~ $ script script.log

Ora prova a eseguire alcuni comandi per consentire allo script di registrare i comandi eseguiti sul terminale.

[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

Ora prova a visualizzare il file di registro "script.log ' per tutti i comandi registrati, mentre visualizzi il log ti accorgi che lo script memorizza anche avanzamenti di riga e backspace.

[email protected] ~ $ vi script.log
Risultato campione
^[[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
~                                                              

Puoi usare il -a opzione per aggiungere il file di registro o dattiloscritto, mantenendo i contenuti precedenti.

[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

Visualizza il contenuto dello script, accedi dopo aver utilizzato -a opzione per aggiungerlo.

[email protected] ~ $ vi script.log
Risultato campione
^[[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

Per registrare i risultati di un singolo comando diverso da una sessione di shell interattiva, usa -c opzione.

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

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

Se desideri che lo script venga eseguito in modalità non interattiva, puoi utilizzare -q opzione. Non vedrai un messaggio che mostra l'avvio o la chiusura dello script.

[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)

Per impostare le informazioni sui tempi su un errore standard o su un file, usa il –tempo opzione. Le informazioni sui tempi sono utili quando si desidera visualizzare nuovamente l'output memorizzato nel file_log.

Avviamo lo script ed eseguiamo i seguenti comandi w , tempo di attività e cal da registrare.

[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    

Puoi visualizzare script.log e time.txt file per il comando di temporizzazione sopra.

[email protected] ~ $ vi script.log
Risultato campione
^[[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

Ora visualizza time.txt file.

[email protected] ~ $ vi time.txt
Risultato campione
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
...

Il time.txt il file ha due colonne, la prima colonna mostra quanto tempo è trascorso dall'ultima visualizzazione e la seconda colonna mostra il numero di caratteri che sono stati visualizzati questa volta.

Usa la pagina man e –help per cercare più opzioni e aiuto nell'uso dell'utilità della riga di comando dello script.

Utilizzo di scriptreplay per riprodurre gli script utilizzando le informazioni sui tempi

La sceneggiatura comando aiuta a riprodurre le informazioni nel tuo file_registro registrato dallo script comando.

Le informazioni sui tempi sono definite da -timing=file opzione utilizzata con lo script comando e file in questo caso è file.txt che è stato utilizzato con il comando script .

Ricorda che devi specificare il file_log hai usato con il comando script.

Riproduciamo ora gli ultimi tre comandi w , tempo di attività e cal che avevamo eseguito come segue.

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

Quando il file_registro riprodotti utilizzando le informazioni di temporizzazione, i comandi registrati vengono eseguiti e il loro output viene visualizzato nello stesso momento in cui è stato visualizzato l'output originale durante la registrazione.

Riepilogo

Questi due comandi, script e sceneggiatura facile da usare e di grande aiuto quando è necessario eseguire lo stesso batch di comandi più volte. Aiutano molto nella gestione dei server che hanno solo un'interfaccia a riga di comando per l'interazione con il tuo sistema. Spero che questa guida sia stata utile e se hai qualcosa da aggiungere o affronti una sfida durante l'utilizzo, non esitare a pubblicare un commento.


Linux
  1. Come registrare il tuo terminale Linux usando asciinema

  2. Come riprodurre le sessioni del terminale registrate con il comando di script Linux

  3. Come acquisire le sessioni del terminale e l'output con il comando di script Linux

  4. Come decomprimere il formato di file .xz in Linux usando le utility tar e xz?

  5. Come impostare la priorità del processo Linux usando i comandi nice e renice

Come riprodurre le sessioni del terminale registrate utilizzando il comando Scriptreplay

Come creare un file in Linux usando Terminal

Come registrare sessioni del terminale Linux utilizzando Asciinema

Come registrare sessioni di terminale in Ubuntu

Come copiare file e directory nel terminale Linux

Come registrare l'audio e salvarlo come file MP3 usando Audacity