30 Mga Halimbawa ng Grep para sa Mga Admin ng System

30 Grep Examples System Admins



Maaari kang makahanap ng grep na naroroon sa loob ng utak ng hayop ng Unix at tulad ng Unix na mga operating system. Ito ay isang pangunahing programa na ginamit para sa pagtutugma ng pattern at nakasulat ito noong dekada 70 kasama ang natitirang tool ng UNIX na alam at minamahal natin (o kinamumuhian).

Habang ang pag-aaral tungkol sa mga pormal na wika at regular na expression ay isang nakapupukaw na paksa. Ang pag-aaral ng grep ay may higit pa dito kaysa sa mga regex. Upang makapagsimula dito at upang makita ang kagandahan at kagandahan ng grep kailangan mo munang makita ang ilang mga halimbawa sa totoong mundo.







Mga halimbawa na madaling gamiting at gawing mas madali ang iyong buhay. Narito ang 30 tulad ng grep karaniwang paggamit ng mga kaso at pagpipilian.



1. ps aux | grep

Ang ps aux ay naglilista ng lahat ng mga proseso at ang kanilang nauugnay na mga bid. Ngunit madalas ang listahang ito ay masyadong mahaba para mag-inspeksyon ang isang tao. Ang paglalagay ng output sa isang utos na grep maaari kang maglista ng mga proseso na tumatakbo na may isang napaka-tukoy na application sa isip. Halimbawa ang maaaring maging sshd o nginx o httpd.



# ps sa | grep sshd
ugat400 0.0 0.2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
ugat1076 0.2 0.3 95204 6816? Ss18:29 0: 00 sshd: ugat@pts/0
ugat1093 0.0 0.0 12784 932pts/0S +18:29 0: 00mahigpit na pagkakahawaksshd

2. Grepping ang iyong mga IP address

Sa karamihan ng mga operating system maaari mong ilista ang lahat ng iyong mga interface ng network at ang IP na nakatalaga sa interface na iyon sa pamamagitan ng paggamit ng alinman sa command ifconfig o ip addr. Ang parehong mga utos na ito ay maglalabas ng maraming karagdagang impormasyon. Ngunit kung nais mong i-print lamang ang IP address (sabihin para sa mga shell script) pagkatapos ay maaari mong gamitin ang utos sa ibaba:





$ip addr | mahigpit na pagkakahawakinet| ang awkward '{print $ 2; } '
$ip addr | mahigpit na pagkakahawak -sainet| ang awkward '{print $ 2; } ' # Para sa mga linya na may inet lamang na hindi inet6 (IPv6)

Nakuha ng utos ng ip addr ang lahat ng mga detalye (kasama ang mga IP address), pagkatapos ay mai-piping sa pangalawang utos na grep inet na naglalabas lamang ng mga linya na may inet sa kanila. Pagkatapos ay mai-pip sa awk print ang pahayag na naglilimbag ng pangalawang salita sa bawat linya (upang ilagay ito nang simple).

P.S: Maaari mo ring gawin ito nang wala ang grep kung alam mong alam mo na rin si awk.



3. Pagtingin sa nabigong mga pagtatangka ng SSH

Kung mayroon kang isang nakaharap sa server ng Internet, na may isang pampublikong IP, ito ay patuloy na bombahan ng mga pagtatangka ng SSH at kung papayagan mo ang mga gumagamit na magkaroon ng batay sa password na pag-access sa SSH (isang patakaran na hindi ko inirerekumenda) maaari mong makita ang lahat ng nasabing mga nabigong pagtatangka gamit ang pagsunod sa utos ng grep:

# cat /var/log/auth.log | grep Nabigo
Halimbawang inilagay
Dis5 16:dalawampu: 03 debian sshd[509]: Nabigo ang passwordpara saroot mula sa 192.168.0.100 port52374ssh2
Dis5 16:dalawampu: 07 debian sshd[509]: Nabigo ang passwordpara saroot mula sa 192.168.0.100 port52374ssh2
Dis5 16:dalawampu:labing-isangdebian sshd[509]: Nabigo ang passwordpara saroot mula sa 192.168.0.100 port52374ssh2

4. Pag-piping Grep sa Uniq

Minsan, ang grep ay maglalabas ng maraming impormasyon. Sa halimbawa sa itaas, ang isang solong IP ay maaaring nagtatangka upang ipasok ang iyong system. Sa karamihan ng mga kaso, mayroon lamang isang bilang ng mga nasasamang IP na kailangan mong natatanging kilalanin at i-blacklist.

#pusa /kung saan/mag-log/auth.log| mahigpit na pagkakahawak 'Nabigo' | uniq -f 3

Ang uniq na utos ay dapat na mai-print lamang ang mga natatanging linya. Nilaktawan ng uniq -f 3 ang unang tatlong mga patlang (upang mapansin ang mga timestamp na hindi naulit) at pagkatapos ay magsimulang maghanap ng mga natatanging linya.

5. Grepping para sa Mga Mensahe ng Error

Ang paggamit ng Grep para sa pag-access at mga error log ay hindi limitado sa SSH lamang. Mga error sa pag-log ng mga server ng web (tulad ng Nginx) at pag-access sa mga tala nang maselan. Kung nag-set up ka ng mga script sa pagsubaybay na nagpapadala sa iyo ng mga alerto kapag ang grep 404 ay nagbabalik ng isang bagong halaga. Maaari itong maging lubos na kapaki-pakinabang.

# grep -w '404' /var/www/nginx/access.log

192.168.0.100 - -[06/Dis/2018: 02:dalawampu:29+0530] 'GET /favicon.ico HTTP / 1.1' 404 200
'http://192.168.0.102/' 'Mozilla / 5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit / 537.36 (KHTML, tulad ng Gecko) Chrome / 70.0.3538.110 Safari / 537.36 '


192.168.0.101 - -[06/Dis/2018: 02:Apat lima:16+0530] 'GET /favicon.ico HTTP / 1.1' 404 143
'http://192.168.0.102/' 'Mozilla / 5.0 (iPad; CPU OS 12_1 tulad ng Mac OS X)
AppleWebKit / 605.1.15 (KHTML, tulad ng Gecko) Bersyon / 12.0 Mobile / 15E148 Safari / 604.1 '

Ang regex ay maaaring hindi 404 ngunit ang ilang iba pang pag-filter ng regex para lamang sa mga kliyente sa Mobile o mga aparatong Apple lamang ang tumitingin sa isang webpage. Pinapayagan kang magkaroon ng isang mas malalim na pananaw sa kung paano gumaganap ang iyong app.

6. Listahan ng Package

Para sa mga sistemang nakabatay sa Debian, nakalista sa dpkg -l ang lahat ng mga package na naka-install sa iyong system. Maaari mong i-tubo iyon sa isang utos ng grep upang maghanap ng mga pakete na kabilang sa isang tukoy na application. Halimbawa:

#dpkg -ang | mahigpit na pagkakahawak 'Dumating ako'

7. grep -v fileNames

Upang mailista ang lahat ng mga linya na huwag maglaman ng isang naibigay na pattern, gamitin ang flag -v. Karaniwan itong kabaligtaran ng isang regular na utos ng grep.

8. grep -l

Inililista nito ang lahat ng mga file na naglalaman ng hindi bababa sa isang paglitaw ng ibinigay na pattern. Ito ay kapaki-pakinabang kapag naghahanap ka para sa isang pattern sa loob ng isang direktoryo na may maraming mga file. Ipi-print lamang nito ang pangalan ng file, at hindi ang tukoy na linya na may pattern.

9. Pagpipilian ng solong salita -w

$mahigpit na pagkakahawak -sa <PATON>fileNames

Sinasabi ng flag na -w sa grep na hanapin ang ibinigay na pattern bilang isang buong salita at hindi lamang isang substring ng isang linya. Halimbawa, kanina pa namin grepped ang IP address at ang pattern inet naka-print ang mga linya sa pareho inet at inet6 ang listahan ng parehong mga IPv4 at IPv6 address. Ngunit kung ginamit namin -w flag ang mga linya lamang na may inet bilang isang salitang naunahan at sinundan ng mga puting puwang ay isang wastong tugma.

10. Pinalawak na Regular na Pagpapahayag

Madalas mong malalaman na ang mga regular na expression na katutubong sa Grep ay medyo nalilimitahan. Sa karamihan ng mga script at tagubilin makikita mo ang paggamit ng -E flag at papayagan ka nitong magpasok ng pattern sa tinatawag na Extended Mode.

Narito ang grep at grep -E nag-uutos upang maghanap ng mga salitang Superman at Spiderman.

$mahigpit na pagkakahawak ' (Super | Spider ) tao'text
$mahigpit na pagkakahawak -AND '(Super | Spider) na tao'text

Tulad ng nakikita mo ang pinalawak na bersyon ay mas madaling basahin.

11. Grep para sa iyong mga lalagyan

Kung mayroon kang isang malaking kumpol ng mga lalagyan na tumatakbo sa iyong host, maaari mong grep ang mga ito sa pamamagitan ng pangalan ng imahe, katayuan, port na inilalantad nila at maraming iba pang mga katangian. Halimbawa,

$pantalanps | mahigpit na pagkakahawak [pangalan ng imahe]

12. Grep para sa iyong mga pod

Habang nasa paksa kami ng mga lalagyan. Ang mga Kubernetes ay madalas na may posibilidad na maglunsad ng maraming mga pod sa ilalim ng isang naibigay na pag-deploy. Habang ang bawat pod ay may natatanging pangalan, sa isang naibigay na namespace, nagsisimula sila sa pangalan ng paglawak, karaniwang. Maaari nating grep iyon at ilista ang lahat ng mga pod na nauugnay sa isang naibigay na pag-deploy.

$kubectl kumuha ng mga pod| mahigpit na pagkakahawak <pag-deployName>

13. Grip para sa Malaking data

Kadalasan ang tinaguriang Big Data analysis ay nagsasangkot ng simpleng paghahanap, pag-uuri at pagbibilang ng mga pattern sa isang ibinigay na dataset. Ang mga kagamitan sa mababang antas ng UNIX tulad ng grep, uniq, wc ay lalong mabuti rito. Ipinapakita ng post sa blog na ito ang isang magandang halimbawa ng isang gawaing nagawa sa loob lamang ng ilang segundo gamit ang grep at iba pang mga kagamitan sa Unix habang ang Hadoop ay tumagal ng halos kalahating oras.

Halimbawa, ang hanay ng data na ito ay higit sa 1.7GB ang laki. Naglalaman ito ng impormasyon tungkol sa maraming mga tugma sa chess, kabilang ang mga ginawang paggalaw, na nanalo, atbp. Interesado kami sa mga resulta lamang kaya pinatakbo namin ang sumusunod na utos:

$mahigpit na pagkakahawak 'Resulta'milyon-milyong-2.22.pgn| pag-uri-uriin | uniq -c
221 [Resulta'*']
653728 [Resulta'0-1']
852305 [Resulta'1-0']
690934 [Resulta'1 / 2-1 / 2']

Tumagal ito ng humigit-kumulang 15 segundo sa isang 4 na taong gulang na 2-core / 4-thread na processor. Kaya sa susunod na malutas mo ang isang malaking problema sa data. Isipin kung maaari mong gumamit ng grep sa halip.

14. grep –color = auto

Hinahayaan ng pagpipiliang ito ang grep na i-highlight ang pattern sa loob ng linya kung saan ito natagpuan.

15. grep -i

Ang pagtutugma ng pattern ng grep ay likas na sensitibo sa kaso. Ngunit kung wala kang pakialam doon at sa gayon ang paggamit ng bandila ng i ay gagawing insensitive ang kaso ng grep.

16. grep -n

Ipapakita ng -n flag ang mga linya ng linya upang hindi ka mag-alala sa paghahanap ng parehong linya sa paglaon.

17. git grep

Ang Git, ang sistema ng kontrol sa bersyon, mismo ay may built-in na grep command na gumagana tulad ng iyong regular na grep. Ngunit maaari itong magamit upang maghanap ng mga pattern sa anumang nakatuong puno gamit ang katutubong git CLI, sa halip na nakakapagod na mga tubo. Halimbawa, kung nasa master branch ka ng iyong repo maaari kang mag grep sa buong repo gamit ang:

(panginoon)$git grep <pattern>

18. grep -o

Ang -o flag ay talagang kapaki-pakinabang kapag sinusubukan mong i-debug ang isang regex. Ipi-print lamang nito ang katugmang bahagi ng linya, sa halip na ang buong linya. Kaya, kung sakali, nakakakuha ka ng napakaraming hindi gustong linya para sa isang naibigay na pattern, at hindi mo maintindihan kung bakit nangyayari iyon. Maaari mong gamitin ang -o flag upang mai-print ang nakakasakit na substring at mangangatuwiran tungkol sa iyong regex paatras mula doon.

19. grep -x

I-print ng -x flag ang isang linya, kung at kung lamang, ang buong linya ay tumutugma sa iyong ibinigay na regex. Ito ay medyo kapareho ng -w flag na naglimbag ng isang linya kung at isang buong salita lamang ang tumugma sa ibinigay na regex.

20. grep -T

Kapag nakikipag-usap sa mga log at output mula sa isang shell script, mas malamang na makatagpo ka ng mga matitiglang tab upang maiba-iba ang pagitan ng iba't ibang mga haligi ng output. Ang bandila ng -T ay maayos na maiayos ang mga tab na ito upang ang mga haligi ay maayos na naayos, na ginagawang mabasa ang output.

21. grep -q

Pinipigilan nito ang output at tahimik na pinapatakbo ang utos ng grep. Napaka kapaki-pakinabang kapag pinapalitan ang teksto, o nagpapatakbo ng grep sa isang daemon script.

22. grep -P

Ang mga taong nasanay na maglagay ng regular na expression ng syntax ay maaaring gumamit ng -P flag upang magamit nang eksakto iyon. Hindi mo kailangang malaman ang pangunahing regular na expression, kung aling grep ang ginagamit bilang default.

23. grep -D [ACTION]

Sa Unix, halos lahat ay maaaring gamutin bilang isang file. Dahil dito, ang anumang aparato, isang socket, o isang FIFO stream ng data ay maaaring maipakain sa grep. Maaari mong gamitin ang -D flag na sundan ng isang ACTION (ang default na aksyon ay BASAHIN). Ang ilang iba pang mga pagpipilian ay SKIP upang tahimik na laktawan ang mga tukoy na aparato at RecURSE upang recursively dumaan sa mga direktoryo at symlink.

24. Pag-uulit

Kung naghahanap ng ibinigay na pattern na kung saan ay isang pag-uulit ng isang kilalang mas simpleng pattern, pagkatapos ay gumamit ng mga kulot na brace upang ipahiwatig ang bilang ng pag-uulit

$mahigpit na pagkakahawak -AND [0-9]{10}

Nagpi-print ito ng mga linya na naglalaman ng mga string na 10 o higit pang mga digit na haba.

25. Ang pag-uulit ay maikli

Ang ilang mga espesyal na character ay nakalaan para sa isang tukoy na uri ng pag-uulit ng pattern. Maaari mong gamitin ang mga ito sa halip na mga kulot na brace, kung umaangkop sa iyong pangangailangan.

? : Ang pattern ng naunang marka ng tanong ay dapat na tumugma sa zero o isang beses.

*: Ang pattern na naunang bituin ay dapat na tumugma sa zero o higit pang mga beses.

+: Ang pattern na naunang plus ay dapat na tumugma sa isa o higit pang mga beses.

25. Mga Byte Offset

Kung nais mong malaman tingnan ang byte offset ng mga linya kung saan matatagpuan ang katugmang ekspresyon, maaari mong gamitin ang -b flag upang i-print din ang mga offset. Upang mai-print ang offset ng tumutugma lamang na bahagi ng isang linya, maaari mong gamitin ang -b flag na may -o flag.

$mahigpit na pagkakahawak -b -o kaya <PATON> [fileName]

Nangangahulugan lamang ang offset, pagkatapos ng kung gaano karaming byte mula sa simula ng file nagsisimula ang pagtutugma ng string.

26. egrep, fgrep at rgerp

Madalas mong makita ang panawagan ng egrep, upang magamit ang pinalawig na regular na expression ng syntax na tinalakay namin kanina. Gayunpaman, ito ay isang hindi na ginagamit na syntax at inirerekumenda na iwasan mong gamitin ito. Gumamit ng grep -E sa halip. Katulad nito, gumamit ng grep -F, sa halip na fgrep at grep -r sa halip na rgrep.

27. grep -z

Minsan ang input sa grep ay hindi mga linya na nagtatapos sa isang bagong character. Halimbawa, kung pinoproseso mo ang isang listahan ng mga pangalan ng file, maaaring magmula sila mula sa iba't ibang mga mapagkukunan. Sinasabi ng flag na -z sa grep na tratuhin ang character na NULL bilang pagtatapos ng linya. Pinapayagan kang magamot ang papasok na stream bilang anumang regular na text file.

28. grep -a [fileName]

Sinasabi ng isang watawat sa grep na tratuhin ang naibigay na file na parang ito ay regular na teksto. Ang file ay maaaring isang binary, ngunit ituturing ng grep ang mga nilalaman sa loob, na parang teksto ang mga ito.

29. grep -U [fileName]

Sinasabi ng flag ng -U sa grep na tratuhin ang mga naibigay na mga file na parang mga binary file at hindi teksto. Sa pamamagitan ng default hinuhulaan ng grep ang uri ng file sa pamamagitan ng pagtingin sa unang ilang mga byte. Ang paggamit ng bandila na mga overrule na hulaan ang gumagana.

Grep -m BIL

Gamit ang malalaking mga file, ang grepping para sa isang expression ay maaaring tumagal ng magpakailanman. Gayunpaman, kung nais mong suriin lamang ang unang bilang ng mga tugma maaari mong gamitin ang -m flag upang magawa ito. Ito ay mas mabilis at ang output ay madalas na mapamahalaan din.

Konklusyon

Ang isang pulutong ng araw-araw na trabaho ng isang sysadmin ay nagsasangkot ng pag-ayos sa pamamagitan ng malalaking swaths ng teksto. Maaari itong mga security log, mga tala mula sa iyong web o mail server, aktibidad ng gumagamit o kahit na malaking teksto ng mga pahina ng tao. Binibigyan ka ng Grep ng labis na kakayahang umangkop kapag nakikipag-usap sa mga kasong paggamit.

Inaasahan ko, ang ilang mga halimbawa sa itaas at paggamit ng mga kaso ay nakatulong sa iyo sa mas mahusay na pag-unawa sa buhay na fossil ng isang software.