Sådan optages og afspilles Linux Terminal Sessions ved hjælp af kommandoer til script og scriptreplay


I denne vejledning skal vi se på, hvordan du bruger et script og scriptreplay-kommandoer i Linux, der kan hjælpe dig med at optage kommandoer og deres output, der er trykt på din terminal under en given session.

Historik-kommandoen er et fantastisk kommandolinjeprogram, der hjælper brugere med at gemme den tidligere anvendte kommando, selvom den ikke gemmer output fra en kommando.

Derfor er kommandoen script praktisk til at give dig en stærk funktionalitet, der hjælper dig med at registrere alt, hvad der er trykt på din terminal, til en logfil. Du kan derefter henvise til denne fil senere, hvis du vil se output fra en kommando i historikken fra log_filen.

Du kan også afspille kommandoer, som du har optaget, ved hjælp af kommandoen scriptreplay ved hjælp af en timinginformation.

Sådan optages Linux Terminal ved hjælp af scriptkommando

Scriptkommandoen gemmer terminalaktiviteter i en logfil, der kan navngives af en bruger, når et navn ikke er angivet af en bruger, bruges standardfilnavnet, typescript.

# script [options] - -timing=timing_file log_filename

For at starte optagelse af Linux-terminal skal du skrive script og tilføje logfilnavnet som vist.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

For at stoppe script, skriv exit og tryk på [Enter].

[email  ~ $ exit

Script done, file is history_log.txt

Hvis scriptet ikke kan skrive til den navngivne logfil, viser det en fejl.

For eksempel tillader tilladelsen til filtypeskriptet i nedenstående output ikke læsning, skrivning og udførelse af filen, ikke af nogen bruger eller gruppe. Når du kører script-kommandoen uden et logfilnavn, forsøger den at skrive til standardfilen og skrive typeskrift og dermed vise en fejl.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

Jeg har navngivet min logfil script.log i eksemplet nedenfor, du kan give din fil et andet navn.

[email  ~ $ script script.log

Prøv nu at udføre få kommandoer for at tillade script at registrere udførte kommandoer på terminalen.

[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

Prøv nu at se logfilen 'script.log' for alle registrerede kommandoer, mens du ser loggen, indser du, at scriptet også gemmer linjefeeds og backspaces.

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

Du kan bruge indstillingen -a til at tilføje logfilen eller typeskriptet, mens du bevarer det tidligere indhold.

[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

Se indholdet af scriptet, log efter brug af -en mulighed for at tilføje det.

[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

Brug indstillingen -c til at logge resultater af en anden kommando end en interaktiv shell-session.

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

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

Hvis du vil have script til at køre i en stille tilstand, kan du bruge indstillingen -q. Du kan ikke se en besked, der viser, at scriptet starter eller afsluttes.

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

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

For at indstille tidsoplysninger til standardfejl eller en fil, brug indstillingen –timing. Timingoplysningerne er nyttige, når du vil vise det output, der er gemt i log_filen igen.

Lad os starte script og køre følgende kommandoer w, oppetid og kal, der skal optages.

[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    

Du kan se script.log og time.txt-filen til timingkommandoen ovenfor.

[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

Se nu time.txt-filen.

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

Time.txt-filen har to kolonner, den første kolonne viser, hvor lang tid der er gået siden sidste visning, og den anden kolonne viser antallet af tegn, der er vist denne gang.

Brug mandsiden og –hjælp til at søge efter flere muligheder og hjælp til at bruge scriptets kommandolinjeprogram.

Brug af scriptreplay til at afspille scripts ved hjælp af timingoplysninger

Kommandoen scriptreplay hjælper med at afspille oplysninger i din logfil, der er registreret af scriptkommandoen.

Timingsoplysningerne er defineret af filtypen -timing =, der bruges med scriptkommandoen, og filen i dette tilfælde er file.txt, der blev brugt med scriptkommandoen.

Husk, at du skal angive den logfil, du brugte med scriptkommandoen.

Lad os nu afspille de sidste tre kommandoer w, oppetid og kal, som vi havde kørt som følger.

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

Når log_filen afspilles igen ved hjælp af timinginformationen, køres de indspillede kommandoer, og deres output vises samtidig, da den originale output blev vist, mens den blev optaget.

Resumé

Disse to kommandoer, script og scriptreplay er nemme at bruge og hjælper meget, når du skal køre den samme batch af kommandoer flere gange. De hjælper meget med at administrere servere, der kun har kommandolinjegrænseflade til interaktion med dit system. Håber, at denne guide var nyttig, og hvis du har noget at tilføje eller står over for en udfordring, mens du bruger dem, tøv ikke med at skrive en kommentar.