Kako snimiti i reproducirati sesije Linux terminala koristeći naredbe 'script' i 'scriptreplay'


U ovom vodiču ćemo pogledati kako koristiti naredbe script i scriptreplay u Linuxu koje vam mogu pomoći da snimite komande i njihov izlaz odštampan na vašem terminalu tokom datog sjednici.

Naredba historije je odličan uslužni program komandne linije koji pomaže korisnicima da pohrane prethodnu korištenu naredbu, iako ne pohranjuje izlaz naredbe.

Ne propustite: Showterm.io – alat za snimanje na Linux terminalu

Ne propustite: 8 najboljih desktop snimača ekrana za Linux

Stoga je komanda script zgodna da vam pruži moćnu funkcionalnost koja vam pomaže da snimite sve što je odštampano na vašem terminalu u log_file. Zatim se kasnije možete obratiti na ovu datoteku u slučaju da želite vidjeti izlaz komande u historiji iz log_file.

Također možete reproducirati komande koje ste snimili pomoću naredbe scriptreplay koristeći informacije o vremenu.

Kako snimiti Linux terminal koristeći naredbu skripte

Komanda script pohranjuje aktivnosti terminala u datoteku dnevnika koju korisnik može imenovati, kada korisnik nije dao ime, koristi se zadani naziv datoteke, typescript .

Osnovna sintaksa naredbe skripte

script [options] - -timing=timing_file log_filename

Da započnete snimanje Linux terminala, upišite script i dodajte log filename kao što je prikazano.


tecmint@tecmint ~ $ script history_log.txt

Script started, file is history_log.txt

Da zaustavite script, otkucajte exit i pritisnite [Enter].


tecmint@tecmint ~ $ exit

Script done, file is history_log.txt

Ako skripta ne može pisati u imenovanu datoteku dnevnika, onda prikazuje grešku.

Na primjer, u donjem izlazu, dozvole datoteke typescript ne dozvoljavaju čitanje, pisanje i izvršavanje datoteke ne od strane bilo kojeg korisnika ili grupe. Kada pokrenete naredbu script bez imena datoteke dnevnika, ona pokušava da upiše u zadanu datoteku, typescript stoga prikazuje grešku.


tecmint@tecmint ~ $ ls -l typescript

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

tecmint@tecmint ~ $ script

script: open failed: typescript: Permission denied
Terminated

Primjeri korištenja naredbe script

Svoju datoteku dnevnika sam nazvao script.log u primjeru ispod, možete svom fajlu dati drugačije ime.


tecmint@tecmint ~ $ script script.log

Sada pokušajte da izvršite nekoliko naredbi kako biste omogućili skripti da snimi izvršene komande na terminalu.


tecmint@tecmint ~ $ 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           
                      
tecmint@tecmint ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             LOGIN@   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

tecmint@tecmint ~ $ uptime

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

tecmint@tecmint ~ $ whoami

tecmint

tecmint@tecmint ~ $ echo 'using script'

using script
tecmint@tecmint ~ $ exit
exit
Script done, file is script.log

Sada pokušajte da pogledate datoteku dnevnika „script.log“ za sve snimljene komande, dok gledate dnevnik shvatićete da skripta takođe pohranjuje redove i pomake.


tecmint@tecmint ~ $ vi script.log
Sample Output

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

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

Možete koristiti opciju -a za dodavanje datoteke dnevnika ili kucanog teksta, zadržavajući prethodni sadržaj.


tecmint@tecmint ~ $ script -a script.log
Script started, file is script.log

tecmint@tecmint ~ $ date
Wed Sep 16 14:59:36 IST 2015


tecmint@tecmint ~ $ pwd
/home/tecmint


tecmint@tecmint ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz


tecmint@tecmint ~ $ whatis script
script (1)           - make typescript of terminal session

Pogledajte sadržaj skripte, prijavite se nakon što koristite opciju -a za dodavanje.


tecmint@tecmint ~ $ vi script.log
Sample Output

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

Za evidentiranje rezultata jedne naredbe osim interaktivne sesije ljuske, koristite opciju -c.


tecmint@tecmint ~ $ script -c 'hostname' script.log

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

Ako želite da se skripta izvodi u tihom načinu, onda možete koristiti opciju -q. Nećete vidjeti poruku koja pokazuje da se skripta pokreće ili izlazi.


tecmint@tecmint ~ $ script -c 'who'  -q  script.log

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

Za postavljanje informacija o vremenu na standardnu grešku ili datoteku koristite opciju –tempiranje. Informacije o vremenu su korisne kada želite ponovo prikazati izlaz pohranjen u log_file.

Pokrenimo skriptu i pokrenimo sljedeće komande w, uptime i cal koje će biti snimljene.


tecmint@tecmint ~ $ script --timing=time.txt script.log
Script started, file is script.log

tecmint@tecmint ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             LOGIN@   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

tecmint@tecmint ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

tecmint@tecmint ~ $ 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    

Možete pogledati datoteke script.log i time.txt za gornju naredbu za mjerenje vremena.


tecmint@tecmint ~ $ vi script.log
Sample Output

^[[0m^[[255D^[[01;32mtecmint@tecmint^[[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             LOGIN@   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;32mtecmint@tecmint^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;32mtecmint@tecmint^[[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

Sada pogledajte datoteku time.txt.


tecmint@tecmint ~ $ vi time.txt
Sample Output

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 dvije kolone, prva kolona pokazuje koliko je vremena prošlo od posljednjeg prikaza, a druga kolona prikazuje broj znakova koji su prikazani ovog puta.

Koristite stranicu priručnika i –pomoć da potražite više opcija i pomoći u korištenju uslužnog programa komandne linije skripte.

Korišćenje scriptreplay za ponavljanje skripti koristeći informacije o vremenu

Komanda scriptreplay pomaže da se ponovo reprodukuju informacije u vašem log_file koje je zabilježila naredba script.

Informacije o vremenu su definirane opcijom -timing=file koja se koristi sa naredbom script i file u ovom slučaju je file.txt koji je korišten sa naredbom skripte.

Zapamtite da morate navesti log_file koji ste koristili sa naredbom skripte.

Hajde sada da ponovimo posljednje tri komande w, uptime i cal koje smo pokrenuli na sljedeći način.


tecmint@tecmint ~ $ scriptreplay --timing=time.txt script.log

Kada se log_file reproducira koristeći informacije o vremenu, snimljene komande se pokreću i njihov izlaz se prikazuje u isto vrijeme kada je originalni izlaz bio prikazan tokom snimanja.

Sažetak

Ove dvije komande, script i scriptreplay jednostavne su za korištenje i puno pomažu kada trebate pokrenuti istu grupu komandi nekoliko puta. Oni puno pomažu u upravljanju serverima koji imaju samo interfejs komandne linije za interakciju sa vašim sistemom. Nadamo se da je ovaj vodič bio koristan i ako imate nešto da dodate ili se suočite sa izazovom dok ih koristite, ne ustručavajte se da objavite komentar.