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.