![Cum se auditează performanța rețelei, securitatea și depanarea în Linux](/f/869158b9b5a36eb61854fd168d4a7515.png?width=100&height=100)
Folosim istorie comandați frecvent în lucrările noastre de rutină zilnice pentru a verifica istoricul comenzii sau pentru a obține informații despre comanda executată de utilizator. În acest post, vom vedea cum putem folosi comanda istoric în mod eficient pentru a extrage comanda care a fost executată de utilizatori în shell Bash. Acest lucru poate fi util în scopul auditului sau pentru a afla ce comandă este executată la ce Data și timp.
În mod implicit Data și timestamp-ul nu va fi văzut în timpul executării istorie comanda. Cu toate acestea, bash shell oferă CLI instrumente pentru editarea istoricului comenzilor utilizatorului. Să vedem câteva sfaturi și trucuri la îndemână și puterea istorie comanda.
Executarea simplă istorie comanda de la terminal vă va arăta o listă completă a ultimelor comenzi executate cu numere de linie.
[[e-mail protejat] ~] $ history 1 PS1 = '\ e [1; 35m [\[e-mail protejat]\ h \ w] $ \ e [m '2 PS1 = "\ e [0; 32m [\[e-mail protejat]\ h \ W] $ \ e [m "3 PS1 =" \[e-mail protejat]\ h: \ w [\ j] $ "4 ping google.com 5 echo $ PS1 6 tail -f / var / log / messages 7 tail -f / var / log / messages 8 exit 9 clear 10 history 11 clear 12 history
Cum se găsește Data și timestamp-ul impotriva comenzii? Cu 'export' comanda cu variabilă va afișa comanda istoric cu marcajul de timp corespunzător atunci când comanda a fost executată.
[[e-mail protejat] ~] $ export HISTTIMEFORMAT = '% F% T' 1 2013-06-09 10:40:12 cat / etc / issue 2 2013-06-09 10:40:12 clear 3 2013-06-09 10:40:12 find / etc -name * .conf 4 2013-06-09 10:40:12 clear 5 2013-06-09 10:40:12 history 6 2013-06-09 10:40:12 PS1 = '\ e [1; 35m [\[e-mail protejat]\ h \ w] $ \ e [m '7 2013-06-09 10:40:12 PS1 = "\ e [0; 32m [\[e-mail protejat]\ h \ W] $ \ e [m "8 09-06-2013 10:40:12 PS1 =" \[e-mail protejat]\ h: \ w [\ j] $ "9 2013-06-09 10:40:12 ping google.com 10 2013-06-09 10:40:12 echo $ PS1
% F Echivalent cu% Y -% m -% d. % T Înlocuit de timp (% H:% M:% S)
După cum putem vedea, aceeași comandă este repetată de mai multe ori în ieșirea de mai sus. Cum se filtrează comenzile simple sau nedistructive din istorie?. Foloseste urmatoarele 'export‘Comanda prin specificarea comenzii în HISTIGNORE = ’ls -l: pwd: date:’ nu va fi salvat de sistem și nu va fi afișat în comanda istoric.
[[e-mail protejat] ~] $ export HISTIGNORE = 'ls -l: pwd: date:'
Cu comanda de mai jos ne va ajuta să ignorăm intrarea comenzilor duplicate făcute de utilizator. Doar o singură intrare va fi afișată în istoric, dacă un utilizator execută aceeași comandă de mai multe ori într-un prompt Bash.
[[e-mail protejat] ~] $ export HISTCONTROL = ignorate
Anulați comanda de export din mers. A executa anulați exportul comanda cu variabilă una câte una, orice comenzi au fost exportate de export comanda.
[[e-mail protejat] ~] $ unset export HISTCONTROL
Faceți o intrare după cum urmează în .bash_profile a salva export comanda permanent.
[[e-mail protejat] ~] $ vi .bash_profile # .bash_profile # Obțineți pseudonimele și funcțiile. dacă [-f ~ / .bashrc]; apoi. ~ / .bashrc. fi # Mediul specific utilizatorului și programele de pornire export HISTCONTROL = ignorate PATH = $ PATH: $ HOME / bin. exporta CALEA
Cum se vede istoricul comenzilor executate de un anumit utilizator. Bash ține evidența istoriei într-un „~ / .Bash_history” fişier. Putem vizualiza sau deschide fișierul pentru a vedea istoricul comenzilor.
[[e-mail protejat]~] $ vi .bash_history cd / tmp / cd logstalgia-1.0.3 / ./configure. rădăcină sudo passwd. apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc. ./configure. face. apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc ++ apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc. apt-get install make. mysql -u root -p. apt-get install grsync. apt-get install la unison. unison
Unele organizații nu păstrează istoricul comenzilor din cauza politicii de securitate a organizației. În acest caz, putem edita .bash_profile fișier (este un fișier ascuns) al utilizatorului și faceți o intrare ca mai jos.
[[e-mail protejat] ~] $ vi .bash_profile # .bash_profile # Obțineți pseudonimele și funcțiile. dacă [-f ~ / .bashrc]; apoi. ~ / .bashrc. fi # Mediul specific utilizatorului și programele de pornire PATH = $ PATH: $ HOME / bin. HISTSIZE = 0. exporta CALEA. .bash_profile (END)
Salvați fișierul și încărcați modificările cu comanda de mai jos.
[[e-mail protejat] ~] $ source .bash_profile
Notă: Dacă nu doriți ca sistemul să rețină comenzile pe care le-ați tastat, pur și simplu executați comanda de mai jos, care va dezactiva sau opri înregistrarea istoricului din mers.
[[e-mail protejat] ~] $ export HISTSIZE = 0
Sfaturi: Căutare 'HISTSIZE„Și editați în„/etc/profile’ fișier cu superutilizator. Modificarea fișierului va avea efect la nivel global.
Cu sus și jos săgeată, putem vedea comanda utilizată anterior care poate fi utilă sau vă poate enerva. Ștergerea sau ștergerea tuturor intrărilor din lista istoricului bash cu „-c' Opțiuni.
[[e-mail protejat] ~] $ history -c
Căutați comanda prin „.bash_history„Prin introducerea fișierului istoric în„grep' ca mai jos. De exemplu, comanda de mai jos va căuta și va găsi „pwd‘Comanda din lista istoric.
[[e-mail protejat] ~] $ history | grep pwd 113 2013-06-09 10:40:12 pwd 141 2013-06-09 10:40:12 pwd 198 2013-06-09 15:46:23 istorie | grep pwd 202 2013-06-09 15:47:39 istorie | grep pwd
Căutați comanda executată anterior cu „Ctrl + r” comanda. După ce ați găsit comanda pe care o căutați, apăsați pe „introduce„Pentru a executa același lucru, apăsați„Esc‘A-l anula.
(reverse-i-search) `sursă ': sursă .bash_profile
Reamintim o comandă specifică folosită anterior. Combinatie de Bang și 8 (!8) comanda va reaminti numărul 8 comanda pe care ați executat-o.
[[e-mail protejat] ~]$ !8
Reamintim comanda folosită anterior (netstat -np | grep 22) cu '!„Și urmat de câteva litere din acea comandă specială.
[[e-mail protejat]~] $! net. netstat -np | grep 22. (Nu s-au putut citi informații pentru „-p”: geteuid () = 501, dar ar trebui să fiți root.) tcp 0 68 192.168.50.2:22 192.168.50.1:1857 STABILIT - tcp 0 0 192.168.50.2:22 192.168.50.1:2516 STABILIT - unix 2 [] DGRAM 12284 - @ / org / freedesktop / hal / udev_event. unix 3 [] STREAM CONECTAT 14522 - unix 2 [] DGRAM 13622 - unix 3 [] STREAM CONNECTED 12250 - @ / var / run / hald / dbus-ujAjOMNa0g. unix 3 [] STREAM CONECTAT 12249 - unix 3 [] STREAM CONNECTED 12228 - / var / run / dbus / system_bus_socket. unix 3 [] STREAM CONECTAT 12227 -
Am încercat să evidențiem puterea comenzii istoriei. Cu toate acestea, acest lucru nu este sfârșitul acestuia. Vă rugăm să ne împărtășiți experiența dvs. de comandă istorică prin caseta noastră de comentarii de mai jos.