30 primjera grepa za administratore sustava

30 Grep Examples System Admins

Grep možete pronaći duboko u životinjskom mozgu Unixa i operativnih sustava sličnih Unixu. To je osnovni program koji se koristi za usklađivanje uzoraka, a napisan je 70 -ih godina zajedno s ostatkom UNIX alata koji poznajemo i volimo (ili mrzimo).

Dok je učenje o formalnim jezicima i regularnim izrazima uzbudljiva tema. Učenje grepa ima mnogo više od regularnih izraza. Da biste započeli s njim i vidjeli ljepotu i eleganciju grepa, prvo morate vidjeti neke primjere iz stvarnog svijeta.



Primjeri koji su zgodni i čine vam život malo lakšim. Evo 30 takvih uobičajenih slučajeva i opcija grepa.



1. ps aux | grep

PS aux popis svih procesa i njihovih povezanih pida. No često je ovaj popis predug da bi ga čovjek mogao pregledati. Prebacivanjem izlaza u naredbu grep možete popisati procese koji se izvode s vrlo specifičnom aplikacijom na umu. Na primjer, to može biti sshd ili nginx ili httpd.



# ps do | grep sshd
korijen400 0,0 0,2 69944 5624? Sv17:47 0: 00/usr/sbin/sshd-D
korijen1076 0,2 0,3 95204 6816? Sv18:29 0: 00 sshd: korijen@boda/0
korijen1093 0,0 0,0 12784 932boda/0S+18:29 0: 00zahvatsshd

2. Grepiranje vaših IP adresa

U većini operativnih sustava možete navesti sva svoja mrežna sučelja i IP koji je dodijeljen tom sučelju pomoću naredbe ifconfig ili ip addr. Obje ove naredbe emitirat će puno dodatnih informacija. No, ako želite ispisati samo IP adresu (recimo za skripte ljuske), tada možete upotrijebiti naredbu u nastavku:

$ip adr | zahvatinet| awk '{print $ 2; } '
$ip adr | zahvat -uinet| awk '{print $ 2; } ' #Za linije sa samo inet, a ne inet6 (IPv6)

Naredba ip addr dobiva sve pojedinosti (uključujući IP adrese), zatim se dostavlja do druge naredbe grep inet koja ispisuje samo retke s inet -om u njima. To se zatim prenosi u awk print izjavu koja ispisuje drugu riječ u svakom retku (pojednostavljeno rečeno).

P.S: To možete učiniti i bez grepa ako znate da awk dobro znate.



3. Gledajući neuspjele pokušaje SSH -a

Ako imate poslužitelj usmjeren na Internet, s javnim IP -om, on će se stalno bombardirati pokušajima SSH -a, a ako dopustite korisnicima da imaju pristup SSH -u temeljen na lozinkama (pravilo koje ne preporučujem), sve takve neuspjele pokušaje možete vidjeti pomoću slijedeća grep naredba:

# cat /var/log/auth.log | grep Neuspjeh
Uzorak stavljen
Prosinca5 16:dvadeset: 03 debian sshd[509]: Neuspjela lozinkazaroot s porta 192.168.0.10052374ssh2
Prosinca5 16:dvadeset: 07 debian sshd[509]: Neuspjela lozinkazaroot s porta 192.168.0.10052374ssh2
Prosinca5 16:dvadeset:jedanaestdebian sshd[509]: Neuspjela lozinkazaroot s porta 192.168.0.10052374ssh2

4. Cjevovod Grep u Uniq

Ponekad će grep ispisati mnogo informacija. U gornjem primjeru, jedan IP je možda pokušavao ući u vaš sustav. U većini slučajeva postoji samo nekoliko takvih uvredljivih IP adresa koje trebate jedinstveno identificirati i staviti na crnu listu.

#mačka /gdje/zapisnik/auth.log| zahvat 'Iznevjeriti' | uniq -f 3

Naredba uniq trebala bi ispisivati ​​samo jedinstvene retke. Uniq -f 3 preskače prva tri polja (da bi previdio vremenske oznake koje se nikada ne ponavljaju), a zatim počinje tražiti jedinstvene retke.

5. Grepping za poruke o pogreškama

Korištenje Grepa za zapise pristupa i pogreške nije ograničeno samo na SSH. Web poslužitelji (poput Nginxa) zapisuju greške u zapisnicima i zapise pristupa prilično pedantno. Ako postavite nadzorne skripte koje vam šalju upozorenja kada grep 404 vrati novu vrijednost. To može biti vrlo korisno.

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

192.168.0.100 - -[06/Prosinca/2018. godine: 02:dvadeset: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, poput Gecko) Chrome/70.0.3538.110 Safari/537.36 '


192.168.0.101 - -[06/Prosinca/2018. godine: 02:Četiri pet:16+0530] 'GET /favicon.ico HTTP /1.1' 404 143
'http://192.168.0.102/' 'Mozilla/5.0 (iPad; CPU OS 12_1 poput Mac OS X)
AppleWebKit/605.1.15 (KHTML, poput Gecko) Verzija/12.0 Mobile/15E148 Safari/604.1 '

Regex ne mora biti 404, već neki drugi regex filtriranje samo za mobilne klijente ili samo Apple uređaje koji pregledavaju web stranicu. To vam omogućuje dublji uvid u izvedbu vaše aplikacije.

6. Lista paketa

Za sustave temeljene na Debianu, dpkg -l navodi sve pakete instalirane na vašem sustavu. To možete prenijeti u naredbu grep da biste potražili pakete koji pripadaju određenoj aplikaciji. Na primjer:

#dpkg - | zahvat 'Došao sam'

7. grep -v Nazivi datoteka

Za popis svih redaka koji nemojte sadrže zadani uzorak, upotrijebite zastavicu -v. To je u osnovi suprotnost od uobičajene grep naredbe.

8. grep -l

Popisuje sve datoteke koje sadrže barem jedno pojavljivanje isporučenog uzorka. Ovo je korisno kada tražite uzorak unutar direktorija s više datoteka. Ispisuje samo naziv datoteke, a ne i određeni redak s uzorkom.

9. Opcija jedne riječi -w

$zahvat -u <UZORAK>imena datoteka

Zastavica -w govori grepu da traži dani uzorak kao cijelu riječ, a ne samo kao podniz niza. Na primjer, ranije smo tražili IP adresu i uzorak inet ispisao retke s oboje inet i inet6 navodeći i IPv4 i IPv6 adrese. Ali ako smo koristili -w zastavu samo retke s inet kao riječ kojoj prethodi i nakon koje slijede razmaci valjano je podudaranje.

10. Prošireni regularni izraz

Često ćete vidjeti da su regularni izrazi izvorni za Grep pomalo ograničavajući. U većini skripti i uputa naći ćete upotrebu zastavice -E i to će vam omogućiti unos uzorka u ono što se naziva prošireni način rada.

Evo naredbi grep i grep -E za traženje riječi Superman i Spiderman.

$zahvat ' (Super | Spider ) čovjek'tekst
$zahvat -I '(Super | Spider) čovjek'tekst

Kao što vidite, proširenu verziju je mnogo lakše čitati.

11. Grep za svoje spremnike

Ako imate veliki skup spremnika koji rade na vašem hostu, možete ih gregpati po imenu slike, statusu, portovima koje izlažu i mnogim drugim atributima. Na primjer,

$lučki radnikp.s | zahvat [imageName]

12. Grep za svoje mahune

Dok smo na temi kontejnera. Kubernetes često imaju tendenciju pokretanja višestrukih strojeva pod određenom implementacijom. Iako svaka mahuna ima jedinstveni naziv, u danom imenskom prostoru obično započinju imenom implementacije. Možemo to dohvatiti i popisati sve pods -ove povezane s danom implementacijom.

$kubectl dobiti mahune| zahvat <deploymentName>

13. Grip za velike podatke

Često takozvana analiza velikih podataka uključuje jednostavno pretraživanje, sortiranje i brojanje uzoraka u danom skupu podataka. UNIX pomoćni programi niske razine poput grep, uniq, wc posebno su dobri u tome. Ovaj post na blogu prikazuje lijep primjer zadatka obavljenog u samo nekoliko sekundi korištenjem grepa i drugih Unix pomoćnih programa, dok je Hadoop -u trebalo gotovo pola sata.

Na primjer, ovaj skup podataka je veći od 1,7 GB. Sadrži informacije o mnoštvu šahovskih utakmica, uključujući poteze, tko je pobijedio itd. Zanimaju nas samo rezultati pa pokrećemo sljedeću naredbu:

$zahvat 'Proizlaziti'milijunska baza-2.22.pgn| vrsta | uniq -c
221 [Proizlaziti'*']
653728 [Proizlaziti'0-1']
852305 [Proizlaziti'1-0']
690934 [Proizlaziti'1 / 2-1 / 2']

To je trajalo oko 15 sekundi na 4-godišnjem 2-jezgrenom/4-nitnom procesoru. Dakle, sljedeći put kad budete rješavali problem velikih podataka. Razmislite možete li umjesto toga koristiti grep.

14. grep –boja = auto

Ova opcija omogućuje grepu da istakne uzorak unutar retka gdje je pronađen.

15. grep -i

Podudaranje Grep uzorka inherentno razlikuje mala i velika slova. Ali ako vas to ne zanima, upotreba -i zastavice učinit će grep neosjetljivim.

16. grep -n

Zastavica -n prikazat će brojeve redaka tako da ne morate brinuti o tome da ćete kasnije pronaći isti redak.

17. git grep

Git, sustav kontrole verzija, sam ima ugrađenu grep naredbu koja radi prilično slično vašem običnom grepu. No, može se koristiti za traženje uzoraka na bilo kojem predanom stablu koristeći izvorni git CLI, umjesto dosadnih cijevi. Na primjer, ako ste u glavnoj grani svog repo -a, možete grep preko repo -a pomoću:

(ovladati; majstorski)$git grep <uzorak>

18. grep -o

Zastavica -o je jako korisna kada pokušavate otkloniti pogreške u regularnom izrazu. Ispisat će samo odgovarajući dio retka, umjesto cijelog retka. Dakle, u slučaju da dobivate previše neželjenih linija za isporučeni uzorak i ne možete razumjeti zašto se to događa. Možete upotrijebiti zastavicu -o za ispis uvredljivog podniza i obrazloženja o vašem regularnom izrazu unatrag.

19. grep -x

Zastavica -x ispisala bi redak, ako i samo ako, cijeli red odgovara vašem isporučenom regularnom izrazu. Ovo je donekle slično zastavi -w koja je ispisala redak ako i samo cijela riječ odgovara isporučenom regularnom izrazu.

20. grep -T

Kada se bavite zapisnicima i izlazima iz skripti ljuske, veća je vjerojatnost da ćete naići na tvrde kartice za razlikovanje različitih stupaca izlaza. Zastavica -T uredno će poravnati ove kartice tako da su stupci uredno raspoređeni, čineći izlaz čitljivim.

21. grep -q

Time se potiskuje izlaz i tiho izvodi naredba grep. Vrlo korisno pri zamjeni teksta ili pokretanju grep -a u daemon skripti.

22. grep -P

Ljudi koji su navikli na perl sintaksu regularnog izraza mogu koristiti -P zastavu da koriste upravo to. Ne morate naučiti osnovni regularni izraz, koji grep koristi prema zadanim postavkama.

23. grep -D [AKCIJA]

U Unixu se gotovo sve može tretirati kao datoteka. Posljedično, bilo koji uređaj, utičnica ili FIFO tok podataka može se unositi u grep. Možete upotrijebiti oznaku -D koju slijedi ACTION (zadana radnja je READ). Nekoliko drugih opcija su SKIP za tiho preskakanje određenih uređaja i RECURSE za rekurzivno prolaženje kroz direktorije i simboličke veze.

24. Ponavljanje

Ako tražite zadani uzorak koji je ponavljanje poznatog jednostavnijeg uzorka, upotrijebite kovrčave zagrade za označavanje broja ponavljanja

$zahvat -I [0-9]{10}

Ovo ispisuje retke koji sadrže nizove 10 ili više znamenki.

25. Stenografije za ponavljanje

Neki posebni znakovi rezervirani su za određenu vrstu ponavljanja uzoraka. Možete ih koristiti umjesto kovrčavih aparatića, ako odgovaraju vašim potrebama.

? : Uzorak koji prethodi upitniku trebao bi odgovarati nuli ili jednom.

*: Uzorak koji prethodi zvijezdi trebao bi se podudarati s nulom ili više puta.

+: Uzorak koji prethodi plus trebao bi se podudarati jedan ili više puta.

25. Odstupanja bajtova

Ako želite znati vidjeti pomak bajtova redaka u kojima se nalazi odgovarajući izraz, možete upotrijebiti zastavicu -b za ispis pomaka. Za ispis pomaka samo odgovarajućeg dijela retka možete upotrijebiti zastavicu -b sa zastavicom -o.

$zahvat -b -ili <UZORAK> [naziv datoteke]

Odmak jednostavno znači, nakon koliko bajtova od početka datoteke započinje odgovarajući niz.

26. egrep, fgrep i rgerp

Često ćete vidjeti pozivanje egrepa da biste koristili sintaksu proširenog regularnog izraza o kojoj smo ranije govorili. Međutim, ovo je zastarjela sintaksa i preporučuje se da je izbjegavate. Umjesto toga koristite grep -E. Slično, koristite grep -F, umjesto fgrep i grep -r umjesto rgrep.

27. grep -z

Ponekad unos grepa nije redak koji završava znakom novog retka. Na primjer, ako obrađujete popis naziva datoteka, oni mogu doći iz različitih izvora. Zz zastava govori grepu da tretira NULL znak kao završetak retka. To vam omogućuje da tretirate dolazni tok kao bilo koju uobičajenu tekstualnu datoteku.

28. grep -a [ime datoteke]

Zastavica -a govori grepu da tretira isporučenu datoteku kao da je to običan tekst. Datoteka bi mogla biti binarna, ali grep će tretirati unutrašnji sadržaj kao da je tekst.

29. grep -U [fileName]

Zastavica -U govori grepu da tretira isporučene datoteke kao da su binarne datoteke, a ne tekst. Prema zadanim postavkama grep pogađa vrstu datoteke gledajući prvih nekoliko bajtova. Korištenje ove zastavice poništava nagađanje.

Grep -m NUM

Kod velikih datoteka grepanje za izraz može potrajati zauvijek. Međutim, ako želite provjeriti samo prvih NUM brojeva podudaranja, možete upotrijebiti oznaku -m da biste to postigli. Brži je i izlaz je također često upravljiv.

Zaključak

Dosta svakodnevnih poslova sysadmina uključuje pregledavanje velikih dijelova teksta. To mogu biti sigurnosni dnevnici, zapisnici s vašeg weba ili poslužitelja pošte, aktivnosti korisnika ili čak veliki tekst man stranica. Grep vam daje dodatnu fleksibilnost pri rješavanju ovih slučajeva uporabe.

Nadamo se da vam je gore navedenih nekoliko primjera i slučajeva korištenja pomoglo u boljem razumijevanju ovog živog fosila softvera.