Kako snemati in predvajati terminalske seje Linuxa z uporabo ukazov script in scriptreplay


V tem priročniku si bomo ogledali, kako uporabljati skripte in ukaze za predvajanje skript v Linuxu, ki vam lahko pomagajo pri snemanju ukazov in njihovih izpisov, natisnjenih na vašem terminalu med dano sejo.

Ukaz history je odličen pripomoček za ukazno vrstico, ki uporabnikom pomaga shraniti prejšnji uporabljeni ukaz, čeprav ne shrani izhoda ukaza.

Zato je ukaz skripta priročen, da vam nudi zmogljivo funkcionalnost, ki vam pomaga zapisovati vse, kar je natisnjeno na vašem terminalu, v datoteko log_file. Nato se lahko pozneje sklicujete na to datoteko, če si želite ogledati izpis ukaza v zgodovini iz datoteke log_file.

Ukaze, ki ste jih posneli z ukazom scriptreplay, lahko predvajate tudi s pomočjo časovnih informacij.

Kako posneti terminal Linux s pomočjo ukaza skripta

Ukaz skripta shrani dejavnosti terminala v dnevniško datoteko, ki jo lahko poimenuje uporabnik, kadar uporabnik ne navede imena, se uporabi privzeto ime datoteke typeScript.

# script [options] - -timing=timing_file log_filename

Če želite začeti snemati terminal Linux, vnesite skript in dodajte ime dnevniške datoteke, kot je prikazano.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

Če želite ustaviti skript, vnesite exit in pritisnite [Enter].

[email  ~ $ exit

Script done, file is history_log.txt

Če skript ne more zapisovati v imenovano datoteko dnevnika, se prikaže napaka.

Na primer, v spodnjem izhodnem dokumentu dovoljenja tipkopisa datotek ne omogočajo branja, pisanja in izvajanja datoteke nobenega uporabnika ali skupine. Ko zaženete ukaz skripta brez imena dnevniške datoteke, poskuša zapisati v privzeto datoteko, s čimer se prikaže napaka.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

V spodnjem primeru sem svojo dnevniško datoteko poimenoval script.log, datoteki lahko daste drugo ime.

[email  ~ $ script script.log

Zdaj poskusite izvesti nekaj ukazov, da omogočite skriptu snemanje izvršenih ukazov na terminalu.

[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

Zdaj poskusite videti datoteko dnevnika 'script.log' za vse posnete ukaze, medtem ko si ogledujete dnevnik, se zavedate, da skript shranjuje tudi vire vrstic in povratne prostore.

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

Z možnostjo -a lahko dodate datoteko dnevnika ali tipkopis in obdržite predhodno vsebino.

[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

Oglejte si vsebino skripta, prijavite se po uporabi možnosti -a, da jo dodate.

[email  ~ $ vi script.log
^[[0m^[[255D^[[01;[email ^[[01;34m ~ $^[[00m date^M
Wed Sep 16 14:59:36 IST 2015^M
^[[01;[email cmint^[[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

Za beleženje rezultatov enega samega ukaza, ki ni interaktivna lupinska seja, uporabite možnost -c.

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

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

Če želite, da se skript izvaja v mirnem načinu, lahko uporabite možnost -q. Ne boste videli sporočila, ki kaže, da se skript začenja ali izstopa.

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

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

Če želite podatke o času določiti na standardno napako ali datoteko, uporabite možnost –timing. Informacije o času so uporabne, če želite znova prikazati izhod, shranjen v datoteki log_file.

Začnimo skript in zaženimo naslednje ukaze w, uptime in cal za snemanje.

[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    

Zgoraj si lahko ogledate datoteko script.log in time.txt.

[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

Zdaj si oglejte datoteko time.txt.

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

Datoteka time.txt ima dva stolpca, prvi stolpec prikazuje, koliko časa je preteklo od zadnjega prikaza, drugi stolpec pa prikazuje število znakov, ki so bili tokrat prikazani.

Na strani z navodili in –help poiščite več možnosti in pomoč pri uporabi pripomočka za ukazno vrstico skripta.

Uporaba predvajanja skript za predvajanje skriptov z uporabo časovnih informacij

Ukaz scriptreplay pomaga pri ponovnem predvajanju informacij v datoteki dnevnika, ki jih zabeleži ukaz skripta.

Podatki o času so definirani z možnostjo -timing = file, ki se uporablja z ukazom skripta, datoteka pa je v tem primeru datoteka.txt, ki je bila uporabljena z ukazom skripta.

Ne pozabite, da morate določiti datoteko dnevnika, ki ste jo uporabili z ukazom skripta.

Zdaj ponovimo zadnje tri ukaze w, uptime in cal, ki smo jih izvedli, kot sledi.

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

Ko se datoteka dnevnika znova predvaja z uporabo časovnih informacij, se zaženi ukazi izvajajo in njihov izhod se prikaže hkrati, ko je bil med snemanjem prikazan tudi izvirni izhod.

Povzetek

Ta dva ukaza, skript in skript sta preprosta za uporabo in zelo pomagata, ko morate večkrat zagnati isti sklop ukazov. Zelo pomagajo pri upravljanju strežnikov, ki imajo samo vmesnik ukazne vrstice za interakcijo z vašim sistemom. Upam, da je bil ta priročnik koristen in če imate kaj dodati ali se boste med uporabo soočili z izzivom, ne oklevajte in objavite komentar.