Wéi Rekord a Replay Linux Terminal Sessiounen mat Skript a scriptreplay Kommandoen


An dësem Guide wäerte mir kucken wéi Dir e Skript a scriptreplay Kommandoen am Linux benotzt, déi Iech hëllefe fir Kommandoen opzehuelen an hir Ausgab op Ärem Terminal während enger bestëmmter Sessioun gedréckt.

D'Geschicht Kommando ass e super Kommandozeilen Utility deen d'Benotzer hëlleft de fréiere benotzte Kommando ze späicheren, awer et späichert d'Ausgab vun engem Kommando net.

Dofir ass de Skriptbefehl praktesch fir Iech eng mächteg Funktionalitéit ze bidden déi Iech hëlleft alles opzehuelen wat op Ärem Terminal op eng log_file gedréckt gëtt. Dir kënnt dann op dës Datei spéider referenzéieren am Fall wou Dir d'Ausgab vun engem Kommando an der Geschicht aus der log_file kucke wëllt.

Dir kënnt och Kommandoen widderhuelen, déi Dir mat dem scriptreplay Kommando opgeholl hutt andeems Dir eng Timinginformatioun benotzt.

Wéi Rekord Linux Terminal Mat Skript Kommando

De Skriptbefehl späichert Terminalaktivitéiten an enger Logdatei déi vun engem Benotzer benannt ka ginn, wann en Numm net vun engem Benotzer geliwwert gëtt, gëtt de Standard Dateinumm, Typescript benotzt.

# script [options] - -timing=timing_file log_filename

Fir den Opname vum Linux-Terminal unzefänken, gitt Skript a füügt de Log Dateinumm un wéi gewisen.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

Fir de Skript ze stoppen, tippt Ausgang an dréckt op [Enter].

[email  ~ $ exit

Script done, file is history_log.txt

Wann de Skript net op déi genannte Logdatei schreiwen kann, da weist et e Feeler.

Zum Beispill, an der Ausgab hei drënner, erlaabt d'Permissiounen vum Dateitypscript net d'Liesen, Schreiwen an Ausféierung vun der Datei net vun engem Benotzer oder enger Grupp. Wann Dir de Skriptbefehl ouni e Log Dateinumm leeft, probéiert et op d'Standarddatei ze schreiwen, Typscript also weist e Feeler.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

Ech hunn meng Logbicher script.log am Beispill hei ënnen genannt, Dir kënnt Äre Fichier en aneren Numm ginn.

[email  ~ $ script script.log

Probéiert elo e puer Kommandoen auszeféieren fir de Skript ze erlaben ausgefouert Kommandoen um Terminal opzehuelen.

[email  ~ $ 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  ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             [email    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  ~ $ uptime

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

[email  ~ $ whoami

tecmint

[email  ~ $ echo 'using script'

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

Probéiert elo d'Logdatei 'script.log' fir all opgeholl Kommandoen ze gesinn, wärend Dir de Log kuckt, mierkt Dir datt de Skript och Zeilfeeds an Backspaces späichert.

[email  ~ $ vi script.log
^[[0m^[[255D^[[01;[email ^[[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 ^[[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    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 ^[[01;34m ~ $^[[00m uptime^M
 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
^[[01;[email ^[[01;34m ~ $^[[00m whoami^M
tecmint^M
^[[01;[email ^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M
using script^M
^[[01;[email ^[[01;34m ~ $^[[00m exit^M
exit^M

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

Dir kënnt d'Optioun -a benotzen fir d'Protokolldatei oder d'Typskript ze addéieren, de fréieren Inhalt behalen.

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

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


[email  ~ $ pwd
/home/tecmint


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


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

Kuckt d'Inhalter vum Skript, loggt Iech nodeems Dir benotzt -a Optioun benotzt fir et ze addéieren.

[email  ~ $ vi script.log
^[[0m^[[255D^[[01;[email ^[[01;34m ~ $^[[00m date^M
Wed Sep 16 14:59:36 IST 2015^M
^[[01;[email ^[[01;34m ~ $^[[00m pwd^M
/home/tecmint^M
^[[01;[email ^[[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 ^[[01;34m ~ $^[[00m whatis script^M
script (1)           - make typescript of terminal session^M
^[[01;[email ^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M
exit^M

Fir d'Resultater vun engem eenzegen Kommando anescht wéi eng interaktiv Shell-Sessioun ze protokolléieren, benotzt d'Optioun -c.

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

Script started, file is script.log
linux-console.net
Script done, file is script.log

Wann Dir wëllt datt de Skript an engem rouege Modus leeft, da kënnt Dir d'Optioun -q benotzen. Dir gesitt net e Message deen weist datt de Skript ufänkt oder erausgeet.

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

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

Fir Timinginformatioun op Standardfehler oder eng Datei ze setzen benotzt d'-timing Optioun. D'Timinginformatioun ass nëtzlech wann Dir den Ausgang, deen an der log_file gespäichert ass, nei affichéiere wëllt.

Loosst eis de Skript starten a lafen déi folgend Kommandoen w, Uptime a cal fir opzehuelen.

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

[email  ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             [email    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  ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

[email  ~ $ 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    

Dir kënnt d'script.log an time.txt Datei fir den Timing Kommando uewen kucken.

[email  ~ $ vi script.log
^[[0m^[[255D^[[01;[email ^[[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    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 ^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;[email ^[[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

Elo kuckt time.txt Datei.

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

D'time.txt-Datei huet zwou Kolonnen, déi éischt Kolonn weist wéi vill Zäit zanter dem leschten Affichage vergaangen ass an déi zweet Kolonn weist d'Zuel vun Zeechen, déi dës Kéier ugewise goufen.

Benotzt d'Man Säit an -help fir méi Optiounen ze sichen an Hëllef beim Benotze vum Skript Kommandozeil Utility.

Benotzt Scriptreplay fir Scripte mat Timinginformatioun ze widderhuelen

De scriptreplay Kommando hëlleft d'Informatioun an Ärem log_file ze widderhuelen, deen duerch de Skriptbefehl opgeholl gëtt.

D'Timinginformatioun gëtt definéiert vun der -timing=Datei-Optioun déi mam Skriptbefehl benotzt gëtt an d'Datei an dësem Fall ass file.txt déi mam Skriptbefehl benotzt gouf.

Denkt drun datt Dir de log_file spezifizéiere musst deen Dir mam Skriptbefehl benotzt hutt.

Loosst eis elo déi lescht dräi Kommandoen w, Uptime a cal widderhuelen, déi mir wéi follegt lafen.

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

Wann d'log_file mat der Timinginformatioun zréckgespillt gëtt, ginn d'opgeholl Kommandoen ausgeführt an hir Ausgab gëtt zur selwechter Zäit ugewisen datt den ursprénglechen Ausgang wärend der Opnam ugewise gouf.

Resumé

Dës zwee Kommandoen, Skript a Skript spillen einfach ze benotzen an hëllefen vill wann Dir déiselwecht Batch Kommandoen e puer Mol ausféiere musst. Si hëllefen vill bei der Gestioun vun Serveren déi nëmmen Kommandozeileninterface fir Interaktioun mat Ärem System hunn. Hoffen dëse Guide war nëtzlech a wann Dir eppes hutt ze addéieren oder eng Erausfuerderung ze stellen wärend Dir se benotzt, zéckt net e Kommentar ze posten.