30 Grep piemēri sistēmas administratoriem

30 Grep Examples System Admins



Grep klātbūtni var atrast dziļi Unix un Unix līdzīgu operētājsistēmu dzīvnieku smadzenēs. Tā ir pamata programma, ko izmanto modeļu saskaņošanai, un tā tika uzrakstīta 70. gados kopā ar pārējo UNIX rīku, ko mēs zinām un mīlam (vai ienīstam).

Formālo valodu un regulāro izteiksmju apguve ir aizraujoša tēma. Mācīties grep ir daudz vairāk nekā regexes. Lai sāktu darbu un redzētu grep skaistumu un eleganci, vispirms ir jāredz daži reālās pasaules piemēri.







Piemēri, kas ir ērti un nedaudz atvieglo jūsu dzīvi. Šeit ir 30 šādi grep parastās lietošanas gadījumi un iespējas.



1. ps aux | grep

PS aux uzskaita visus procesus un ar tiem saistītos pīdus. Bet bieži vien šis saraksts ir pārāk garš, lai cilvēks to varētu pārbaudīt. Nosūtot izvadi uz komandu grep, jūs varat uzskaitīt procesus, kas darbojas, ņemot vērā ļoti īpašu lietojumprogrammu. Piemēram, tas var būt sshd vai nginx vai httpd.



# ps līdz | grep sshd
sakne400 0.0 0.2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
sakne1076 0.2 0.3 95204 6816? Ss18:29 0: 00 sshd: root@p/0
sakne1093 0.0 0.0 12784 932p/0S+18:29 0: 00satvērienssshd

2. Grepping jūsu IP adreses

Lielākajā daļā operētājsistēmu, izmantojot komandu ifconfig vai ip addr, varat uzskaitīt visas tīkla saskarnes un šim interfeisam piešķirto IP. Abas šīs komandas izdos daudz papildu informācijas. Bet, ja vēlaties drukāt tikai IP adresi (piemēram, čaulas skriptiem), varat izmantot tālāk norādīto komandu.





$ip adrese | satvēriensinet| awk '{drukāt $ 2; } '
$ip adrese | satvēriens -iekšāinet| awk '{drukāt $ 2; } ' #Līnijām ar tikai ieeju, nevis inet6 (IPv6)

Komanda ip addr iegūst visu informāciju (ieskaitot IP adreses), pēc tam tā tiek pārsūtīta uz otro komandu grep inet, kas izvada tikai līnijas ar inet tajās. Pēc tam tas tiek ievietots awk izdrukā paziņojumu, kas katrā rindā izdrukā otro vārdu (vienkārši sakot).

P.S: To var izdarīt arī bez grep, ja labi zināt.



3. Skatoties uz neveiksmīgiem SSH mēģinājumiem

Ja jums ir internetam atvērts serveris ar publisku IP, tas pastāvīgi tiks bombardēts ar SSH mēģinājumiem, un, ja ļausiet lietotājiem piekļūt SSH parolei (politika, kuru es neiesaku), varat redzēt visus šādus neveiksmīgus mēģinājumus, izmantojot sekojiet komandai grep:

# kaķis /var/log/auth.log | grep Fail
Paraugs ārā
Dec5 16:divdesmit: 03 debian sshd[509]: Neizdevās parolepriekšsakne no 192.168.0.100 porta52374ssh2
Dec5 16:divdesmit: 07 debian sshd[509]: Neizdevās parolepriekšsakne no 192.168.0.100 porta52374ssh2
Dec5 16:divdesmit:vienpadsmitdebian sshd[509]: Neizdevās parolepriekšsakne no 192.168.0.100 porta52374ssh2

4. Cauruļvadu savienošana ar Grep uz Uniq

Dažreiz grep izdos daudz informācijas. Iepriekš minētajā piemērā viens IP, iespējams, mēģināja iekļūt jūsu sistēmā. Vairumā gadījumu ir tikai nedaudz šādu aizvainojošu IP, kas jums ir unikāli jāidentificē un jāiekļauj melnajā sarakstā.

#kaķis /kur/žurnāls/auth.log| satvēriens 'Neizdoties' | unikāls -f 3

Komandai uniq vajadzētu izdrukāt tikai unikālas līnijas. Uniq -f 3 izlaiž pirmos trīs laukus (lai nepamanītu laika zīmogus, kas nekad neatkārtojas) un pēc tam sāk meklēt unikālas līnijas.

5. Kļūdu ziņojumu meklēšana

Grep izmantošana piekļuves un kļūdu žurnāliem neaprobežojas tikai ar SSH. Tīmekļa serveri (piemēram, Nginx) reģistrē kļūdu un piekļuves žurnālus diezgan rūpīgi. Ja iestatāt uzraudzības skriptus, kas sūta jums brīdinājumus, kad grep 404 atgriež jaunu vērtību. Tas var būt diezgan noderīgi.

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

192.168.0.100 - -[06/Dec/2018. gads: 02:divdesmit: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, piemēram, Gecko) Chrome/70.0.3538.110 Safari/537.36 '


192.168.0.101 - -[06/Dec/2018. gads: 02:Četri, pieci:16+0530] 'GET /favicon.ico HTTP /1.1' 404 143
'http://192.168.0.102/' 'Mozilla/5.0 (iPad; CPU OS 12_1, piemēram, Mac OS X)
AppleWebKit/605.1.15 (KHTML, piemēram, Gecko) versija/12.0 Mobile/15E148 Safari/604.1 '

Regulārā izteiksme var nebūt 404, bet cita regulārās izteiksmes filtrēšana paredzēta tikai mobilajiem klientiem vai tikai Apple ierīcēm, kuras skatās tīmekļa lapu. Tādējādi varat iegūt dziļāku ieskatu par savas lietotnes veiktspēju.

6. Iepakojuma saraksts

Sistēmās, kuru pamatā ir Debian, dpkg -l ir uzskaitītas visas jūsu sistēmā instalētās pakotnes. Varat to ievadīt komandā grep, lai meklētu pakotnes, kas pieder konkrētai lietojumprogrammai. Piemēram:

#dpkg -viņi | satvēriens 'ES atnācu'

7. grep -v failsNosaukumi

Lai uzskaitītu visas rindas, kuras nevajag satur noteiktu modeli, izmantojiet karodziņu -v. Tas būtībā ir pretējs parastajai grep komandai.

8. grep -l

Tajā ir uzskaitīti visi faili, kuros ir vismaz viens piegādātā modeļa gadījums. Tas ir noderīgi, ja meklējat modeli direktorijā ar vairākiem failiem. Tas drukā tikai faila nosaukumu, nevis konkrēto rindu ar modeli.

9. Viena vārda iespēja -w

$satvēriens -iekšā <RAKSTURS>fileNames

Karogs -w liek grep meklēt norādīto modeli kā veselu vārdu, nevis tikai rindas apakšvirkni. Piemēram, agrāk mēs meklējām IP adresi un modeli inet rindas izdrukāja ar abām inet un inet6 uzskaitot gan IPv4, gan IPv6 adreses. Bet, ja mēs izmantojām karodziņu -w, tikai līnijas ar inet kā vārds pirms un pēc tam atstāj atstarpes, ir derīga atbilstība.

10. Paplašinātā regulārā izteiksme

Jūs bieži atklājat, ka regulārās izteiksmes, kuru dzimtā ir Grep, nedaudz ierobežo. Lielākajā daļā skriptu un instrukciju jūs atradīsit -E karoga izmantošanu, un tas ļaus jums ievadīt modeli tā sauktajā paplašinātajā režīmā.

Šeit ir komandas grep un grep -E, lai meklētu vārdus Supermens un Zirnekļcilvēks.

$satvēriens ' (Super | Zirneklis ) cilvēks'teksts
$satvēriens -UN '(Super | Zirnekļa) cilvēks'teksts

Kā redzat, paplašināto versiju ir daudz vieglāk lasīt.

11. Grep par saviem konteineriem

Ja jūsu saimniekdatorā darbojas liels konteineru kopums, varat tos apskatīt pēc attēla nosaukuma, statusa, portiem, kurus tie atklāj, un daudziem citiem atribūtiem. Piemēram,

$dokerisps | satvēriens [imageName]

12. Grep pēc savām pākstīm

Kamēr mēs esam par konteineru tēmu. Kubernetes noteiktā izvietojumā bieži mēdz palaist vairākas pākstis. Lai gan katrai saknei ir unikāls nosaukums, noteiktā nosaukumvietā tās parasti sākas ar izvietošanas nosaukumu. Mēs varam to saprast un uzskaitīt visas pākstis, kas saistītas ar konkrētu izvietošanu.

$kubectl dabūt pākstis| satvēriens <deploymentName>

13. Grip for Big data

Bieži vien tā sauktā lielo datu analīze ietver vienkāršu modeļu meklēšanu, šķirošanu un skaitīšanu noteiktā datu kopā. Īpaši labi to dara zema līmeņa UNIX komunālie pakalpojumi, piemēram, grep, uniq, wc. Šis emuāra ziņojums parāda jauku uzdevuma piemēru, kas paveikts dažu sekunžu laikā, izmantojot grep un citus Unix utilītus, kamēr Hadoop aizņēma gandrīz pusstundu.

Piemēram, šī datu kopa ir lielāka par 1,7 GB. Tajā ir informācija par daudziem šaha mačiem, ieskaitot gājienus, kuri uzvarēja utt. Mūs interesē tikai rezultāti, tāpēc mēs izpildām šādu komandu:

$satvēriens 'Rezultāts'miljons bāze-2.22.pgn| kārtot | unikāls -c
221 [Rezultāts'*']
653728 [Rezultāts'0-1']
852305 [Rezultāts'1-0']
690934 [Rezultāts'1 / 2-1 / 2']

Tas prasīja apmēram 15 sekundes 4 gadus vecam 2 kodolu/4 pavedienu procesoram. Tātad nākamreiz, kad risināsit lielu datu problēmu. Padomājiet, vai tā vietā varat izmantot grep.

14. grep - krāsa = auto

Šī opcija ļauj grep izcelt modeli līnijas iekšpusē, kur tas tika atrasts.

15. grep -i

Grep modeļa saskaņošana pēc būtības ir reģistrjutīga. Bet, ja jums tas nerūp, karoga -i izmantošana padarīs grep reģistru nejutīgu.

16. grep -n

Karodziņā -n tiks parādīti rindu numuri, tāpēc jums nav jāuztraucas, ka vēlāk atradīsit to pašu rindu.

17. git grep

Git, versiju kontroles sistēmai, ir iebūvēta grep komanda, kas darbojas gandrīz tāpat kā jūsu parastais grep. Bet to var izmantot, lai meklētu modeļus jebkurā kokā, izmantojot vietējo git CLI, nevis garlaicīgas caurules. Piemēram, ja atrodaties repo galvenajā filiālē, varat pārvarēt repo, izmantojot:

(meistars)$git grep <modelis>

18. grep -o

Karodziņš -o ir patiešām noderīgs, ja mēģināt atkļūdot regulāro izteiksmi. Tas drukās tikai atbilstošo līnijas daļu, nevis visu rindu. Tātad, gadījumā, ja piegādātajam modelim jūs saņemat pārāk daudz nevēlamu līniju, un jūs nevarat saprast, kāpēc tas notiek. Jūs varat izmantot karodziņu -o, lai no turienes izdrukātu aizskarošo apakšvirkni un pamatotu savu regulāro izteiksmi.

19. grep -x

Karogs -x drukātu līniju tikai tad un tikai tad, ja visa rinda atbilst jūsu piegādātajai regulārajai izteiksmei. Tas ir nedaudz līdzīgs karodziņam -w, kas drukāja līniju, ja un tikai vesels vārds atbilst piegādātajai regulārajai izteiksmei.

20. grep -T

Strādājot ar žurnāliem un čaulas skriptu izvadiem, jūs, visticamāk, sastapsities ar grūtām cilnēm, lai atšķirtu dažādas izvades kolonnas. Karodziņš -T kārtīgi izlīdzinās šīs cilnes, lai kolonnas būtu kārtīgi sakārtotas, padarot izvadi cilvēka lasāmu.

21. grep -q

Tas nomāc izvadi un klusi izpilda komandu grep. Ļoti noderīga, aizstājot tekstu vai palaižot grep dēmona skriptā.

22. grep -P

Cilvēki, kuri ir pieraduši izmantot regulārās izteiksmes sintaksi, var izmantot karodziņu -P, lai izmantotu tieši to. Jums nav jāiemācās regulārā izteiksme, kuru grep izmanto pēc noklusējuma.

23. grep -D [DARBĪBA]

Programmā Unix gandrīz visu var uzskatīt par failu. Līdz ar to grep var ievadīt jebkuru ierīci, kontaktligzdu vai FIFO datu plūsmu. Varat izmantot karodziņu -D, kam seko DARBĪBA (noklusējuma darbība ir LASĪT). Dažas citas iespējas ir SKIP, lai klusi izlaistu noteiktas ierīces, un RECURSE, lai rekursīvi pārietu uz direktorijiem un simboliem.

24. Atkārtošana

Ja jūs meklējat noteiktu modeli, kas ir zināmā vienkāršākā modeļa atkārtojums, tad izmantojiet cirtainās breketes, lai norādītu atkārtojumu skaitu

$satvēriens -UN [0-9]{10}

Tādējādi tiek izdrukātas līnijas, kas satur 10 vai vairāk ciparu virknes.

25. Atkārtošanas stenogrammas

Dažas īpašās rakstzīmes ir rezervētas konkrētam raksta atkārtojumam. Jūs varat tos izmantot cirtainu lenču vietā, ja tie atbilst jūsu vajadzībām.

? : Modelim pirms jautājuma zīmes jāatbilst nullei vai vienreiz.

*: Rakstam pirms zvaigznes jāatbilst nullei vai vairāk reizes.

+: Modelim pirms plus jāatbilst vienai vai vairākām reizēm.

25. Baitu nobīde

Ja vēlaties uzzināt to rindu baitu nobīdi, kurās atrodama atbilstošā izteiksme, varat izmantot karodziņu -b, lai izdrukātu arī nobīdes. Lai izdrukātu tikai atbilstošās līnijas daļas nobīdi, varat izmantot karodziņu -b ar karodziņu -o.

$satvēriens -b -vai <RAKSTURS> [faila nosaukums]

Nobīde vienkārši nozīmē, pēc cik baitu no faila sākuma sākas atbilstošā virkne.

26. egrep, fgrep un rgerp

Jūs bieži redzēsit egrep izsaukumu, lai izmantotu iepriekš apspriesto paplašinātās regulārās izteiksmes sintaksi. Tomēr šī sintakse ir novecojusi, un ieteicams to neizmantot. Tā vietā izmantojiet grep -E. Līdzīgi izmantojiet grep -F, nevis fgrep un grep -r, nevis rgrep.

27. grep -z

Dažreiz grep ievade nav līnijas, kas beidzas ar jaunas rindas rakstzīmi. Piemēram, ja apstrādājat failu nosaukumu sarakstu, tie var nākt no dažādiem avotiem. Karogs -z liek grep uzskatīt rakstzīmi NULL par rindas beigām. Tas ļauj apstrādāt ienākošo straumi kā jebkuru parastu teksta failu.

28. grep -a [faila nosaukums]

Karodziņā -a tiek norādīts, ka grep apstrādā piegādāto failu tā, it kā tas būtu parasts teksts. Fails varētu būt binārs, bet grep apstrādās tā iekšējo saturu tā, it kā tas būtu teksts.

29. grep -U [faila nosaukums]

Karodziņš -U liek grep rīkoties ar piegādātajiem failiem tā, it kā tie būtu bināri faili, nevis teksts. Pēc noklusējuma grep uzmin faila tipu, apskatot dažus pirmos baitus. Izmantojot šo karodziņu, tiek atcelti minējumi.

Grep -m NUM

Izmantojot lielus failus, izteiksmes griešana var aizņemt mūžīgi. Tomēr, ja vēlaties pārbaudīt tikai pirmo NUM atbilstību skaitu, varat izmantot karodziņu -m, lai to paveiktu. Tas ir ātrāks, un arī izvadi bieži var pārvaldīt.

Secinājums

Sistēmas administratora ikdienas darbs ir saistīts ar lielu teksta daļu izsijšanu. Tie var būt drošības žurnāli, žurnāli no jūsu tīmekļa vai pasta servera, lietotāju darbības vai pat liels teksta lapas. Grep sniedz jums papildu elastību, risinot šos lietošanas gadījumus.

Cerams, ka daži iepriekš minētie piemēri un lietošanas gadījumi ir palīdzējuši jums labāk izprast šo dzīvo programmatūras fosiliju.