Kako snimiti i reproducirati Linux terminalske sesije pomoću naredbi 'script' i 'scriptreplay'


U ovom vodiču pogledat ćemo kako koristiti naredbe script i scriptreplay u Linuxu koje vam mogu pomoći da snimite naredbe i njihov izlaz ispisan na vašem terminalu tijekom određenog sjednica.

Naredba povijesti izvrstan je uslužni program naredbenog retka koji pomaže korisnicima da pohrane prethodne korištene naredbe, iako ne pohranjuje izlaz naredbe.

Ne propustite: Showterm.io – Alat za snimanje Linux terminala

Ne propustite: 8 najboljih snimača zaslona stolnog računala za Linux

Stoga je naredba skripta korisna da vam pruži snažnu funkcionalnost koja vam pomaže da zabilježite sve što je ispisano na vašem terminalu u log_file. Kasnije možete pogledati ovu datoteku u slučaju da želite vidjeti izlaz naredbe u povijesti iz log_file.

Također možete reproducirati naredbe koje ste snimili pomoću naredbe scriptreplay pomoću informacija o vremenu.

Kako snimiti Linux terminal pomoću naredbe skripte

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

Osnovna sintaksa naredbe skripte

script [options] - -timing=timing_file log_filename

Za početak snimanja Linux terminala, upišite script i dodajte naziv datoteke dnevnika kao što je prikazano.


tecmint@tecmint ~ $ script history_log.txt

Script started, file is history_log.txt

Za zaustavljanje skripte upišite exit i pritisnite [Enter].


tecmint@tecmint ~ $ exit

Script done, file is history_log.txt

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

Na primjer, u izlazu ispod, dopuštenja datoteke typescript ne dopuštaju čitanje, pisanje i izvršavanje datoteke niti jednom korisniku ili grupi. Kada pokrenete naredbu skripte bez naziva datoteke dnevnika, ona pokušava pisati u zadanu datoteku, typescript i stoga prikazuje pogreš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 skripte

Nazvao sam svoju datoteku dnevnika script.log u donjem primjeru, svojoj datoteci možete dati drugačiji naziv.


tecmint@tecmint ~ $ script script.log

Sada pokušajte izvršiti nekoliko naredbi kako biste omogućili skripti da zabilježi izvršene naredbe 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 pogledati datoteku dnevnika 'script.log' za sve snimljene naredbe, dok gledate zapisnik shvatit ćete da skripta također pohranjuje pomicanje redaka i vraćanje unatrag.


tecmint@tecmint ~ $ vi script.log
Uzorak izlaza

^[[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 upotrijebiti opciju -a za dodavanje datoteke dnevnika ili tipkopisa, 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 korištenja opcije -a da biste je dodali.


tecmint@tecmint ~ $ vi script.log
Uzorak izlaza

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

Da biste zabilježili rezultate 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 rada, 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 vremenskih informacija na standardnu pogrešku ili datoteku koristite opciju –vremensko. Informacije o vremenu korisne su kada želite ponovno prikazati izlaz pohranjen u log_file.

Pokrenimo skriptu i pokrenimo sljedeće naredbe w, uptime i cal za snimanje.


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 datoteku script.log i time.txt za gornju naredbu za mjerenje vremena.


tecmint@tecmint ~ $ vi script.log
Uzorak izlaza

^[[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
Uzorak izlaza

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 stupca, prvi stupac pokazuje koliko je vremena prošlo od posljednjeg prikaza, a drugi stupac prikazuje broj znakova koji su prikazani ovaj put.

Upotrijebite man stranicu i –help da potražite više opcija i pomoć u korištenju uslužnog programa naredbenog retka skripte.

Korištenje scriptreplay za ponovno reproduciranje skripti pomoću informacija o vremenu

Naredba scriptreplay pomaže ponovno reproducirati informacije u vašoj log_file snimljene naredbom script.

Informacije o vremenu definirane su opcijom -timing=file koja se koristi s naredbom script, a file je u ovom slučaju file.txt koja je korištena s naredbom skripte.

Ne zaboravite da trebate navesti log_file koji ste koristili s naredbom skripte.

Pustimo sada ponovno zadnje tri naredbe 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 pomoću informacija o vremenu, snimljene naredbe se pokreću i njihov izlaz se prikazuje u isto vrijeme kada je originalni izlaz prikazan dok se snimao.

Sažetak

Ove dvije naredbe, script i scriptreplay jednostavne su za korištenje i puno pomažu kada trebate pokrenuti istu skupinu naredbi nekoliko puta. Oni puno pomažu u upravljanju poslužiteljima koji imaju samo sučelje naredbenog retka za interakciju s vašim sustavom. Nadamo se da je ovaj vodič bio koristan i ako imate nešto za dodati ili se suočite s izazovom dok ih koristite, ne ustručavajte se objaviti komentar.