30 Grepi näidet süsteemi administraatoritele

30 Grep Examples System Admins

Grepi oleviku leiate sügavalt Unixi ja Unixi-sarnaste operatsioonisüsteemide loomade ajust. See on põhiprogramm, mida kasutatakse mustrite sobitamiseks ja see kirjutati 70ndatel koos ülejäänud UNIXi tööriistaga, mida me teame ja armastame (või vihkame).

Kuigi ametlike keelte ja regulaaravaldiste tundmaõppimine on põnev teema. Grepi õppimisel on palju muud kui regulaaravaldised. Sellega alustamiseks ning grepi ilu ja elegantsi nägemiseks peate esmalt nägema reaalseid näiteid.

Näited, mis on käepärased ja muudavad teie elu natuke lihtsamaks. Siin on 30 sellist grepi tavalist kasutusviisi ja võimalust.



1. ps aux | grep

Ps aux loetleb kõik protsessid ja nendega seotud pidid. Kuid sageli on see nimekiri inimesele kontrollimiseks liiga pikk. Väljundi suunamisel käsule grep saate loetleda protsessid, mis töötavad väga spetsiifilist rakendust silmas pidades. Näiteks võib see olla sshd või nginx või httpd.



# ps kuni | grep sshd
juur400 0,0 0,2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
juur1076 0,2 0.3 95204 6816? Ss18:29 0: 00 sshd: juur@p/0
juur1093 0,0 0,0 12784 932p/0S+18:29 0: 00haaretsshd

2. Haarates oma IP -aadresse

Enamikus operatsioonisüsteemides saate loetleda kõik oma võrguliidesed ja sellele liidesele määratud IP, kasutades käsku ifconfig või ip addr. Mõlemad käsud väljastavad palju lisateavet. Kuid kui soovite printida ainult IP -aadressi (näiteks shelliskriptide jaoks), saate kasutada järgmist käsku:

$ip aadress | haaretinet| awk „{print 2 dollarit; } '
$ip aadress | haaret -sisseinet| awk „{print 2 dollarit; } ' #Liinide jaoks, millel pole lihtsalt sisendit ja mitte inet6 (IPv6)

Käsk ip addr saab kõik üksikasjad (sh IP -aadressid), seejärel suunatakse see teisele käsule grep inet, mis väljastab ainult read, milles on inet. Seejärel suunatakse see awk printimisse, mis prindib teisele reale teise sõna (lihtsustatult).

P.S: Seda saate teha ka ilma grepita, kui teate, et hästi teate.



3. Vaadates ebaõnnestunud SSH katseid

Kui teil on avaliku IP -ga Interneti -suunaline server, pommitatakse seda pidevalt SSH -katsetega ja kui lubate kasutajatel kasutada paroolipõhist SSH -juurdepääsu (poliitikat, mida ma ei soovitaks), näete kõiki selliseid ebaõnnestunud katseid, kasutades järgmine grep käsk:

# kass /var/log/auth.log | grep Ebaõnnestumine
Proov välja pandud
Dets5 16:kakskümmend: 03 debian sshd[509]: Ebaõnnestunud parooleestjuur alates 192.168.0.100 pordist52374ssh2
Dets5 16:kakskümmend: 07 debian sshd[509]: Ebaõnnestunud parooleestjuur alates 192.168.0.100 pordist52374ssh2
Dets5 16:kakskümmend:üksteistdebian sshd[509]: Ebaõnnestunud parooleestjuur alates 192.168.0.100 pordist52374ssh2

4. Grepi torustik Uniqi

Mõnikord väljastab grep palju teavet. Ülaltoodud näites võis üks IP üritada teie süsteemi siseneda. Enamikul juhtudel on selliseid solvavaid IP -sid vaid käputäis, mille peate unikaalselt tuvastama ja musta nimekirja lisama.

#kass /kus/logi/auth.log| haaret 'Ebaõnnestumine' | uniq -f 3

Käsk uniq peaks printima ainult unikaalseid ridu. Uniq -f 3 jätab kolm esimest välja vahele (et jätta tähelepanuta ajatemplid, mida kunagi ei korrata) ja hakkab seejärel otsima unikaalseid jooni.

5. Veateadete otsimine

Grepi kasutamine juurdepääsu- ja vealogide jaoks ei piirdu ainult SSH -ga. Veebiserverid (nagu Nginx) logivad tõrkeid ja juurdepääsu logisid üsna täpselt. Kui seadistate jälgimisskriptid, mis saadavad teile märguandeid, kui grep 404 tagastab uue väärtuse. See võib olla üsna kasulik.

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

192.168.0.100 - -[06/Dets/2018: 02:kakskümmend: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, nagu Gecko) Chrome/70.0.3538.110 Safari/537.36 '


192.168.0.101 - -[06/Dets/2018: 02:Neli, viis:16+0530] 'GET /favicon.ico HTTP /1.1' 404 143
„http://192.168.0.102/” „Mozilla/5.0 (iPad; CPU OS 12_1 nagu Mac OS X)
AppleWebKit/605.1.15 (KHTML, nagu Gecko) Versioon/12.0 Mobile/15E148 Safari/604.1 '

Regulaar ei pruugi olla 404, vaid mõni muu regulaaravaldise filtreerimine ainult mobiiliklientidele või ainult veebilehti vaatavatele Apple'i seadmetele. See võimaldab teil saada sügavama ülevaate oma rakenduse toimivusest.

6. Pakettide loetelu

Debianil põhinevate süsteemide puhul loetleb dpkg -l kõik teie süsteemi installitud paketid. Saate selle suunata käsku grep, et otsida konkreetsele rakendusele kuuluvaid pakette. Näiteks:

#dpkg -neid | haaret 'Ma tulin'

7. grep -v failinimed

Et loetleda kõik read, mis ära tee sisaldab antud mustrit, kasutage lippu -v. See on põhimõtteliselt vastupidine tavalisele grep -käsule.

8. grep -l

See loetleb kõik failid, mis sisaldavad vähemalt ühte kaasasoleva mustri esinemist. See on kasulik, kui otsite mustrit kataloogist, kus on mitu faili. See prindib ainult faili nime, mitte konkreetset mustriga rida.

9. Ühe sõna valik -w

$haaret -sisse <MUSTER>failinimed

Lipp -w käsib grepil otsida antud mustrit tervikuna ja mitte ainult rea alamstringina. Näiteks varem otsisime IP -aadressi ja mustrit inet trükkis read mõlemaga inet ja inet6 loetledes nii IPv4 kui ka IPv6 aadresse. Aga kui me kasutasime lippu -w, siis ainult read inet kui sõna, millele eelnevad ja millele järgnevad tühikud, on sobiv vaste.

10. Laiendatud regulaaravaldis

Sageli leiate, et Grepile omased regulaaravaldised on natuke piiravad. Enamikus skriptides ja juhistes leiate lipu -E kasutamise ja see võimaldab teil sisestada mustri laiendatud režiimi.

Siin on käsud grep ja grep -E, et otsida sõnu Superman ja Spiderman.

$haaret ' (Super | Ämblik ) mees'teksti
$haaret -JA '(Super | Ämblik) mees'teksti

Nagu näete, on laiendatud versiooni palju lihtsam lugeda.

11. Grep oma konteinerid

Kui teie hostil töötab suur hulk konteinereid, saate neid kuvada pildi nime, oleku, portide ja paljude muude atribuutide järgi. Näiteks,

$dokkijaps | haaret [imageName]

12. Grep oma kaunad

Kui me oleme konteinerite teemal. Kubernetes kipuvad teatud kasutuselevõtu korral sageli mitu kauna käivitama. Kuigi igal podil on kordumatu nimi, algavad nad antud nimeruumis tavaliselt juurutamisnimega. Saame sellest aru saada ja loetleda kõik antud juurutamisega seotud kaunad.

$kubectl saada kaunad| haaret <deploymentName>

13. Grip for Big Data

Sageli hõlmab niinimetatud suurandmete analüüs lihtsat otsimist, sortimist ja antud andmestiku mustrite lugemist. Eriti head on selles madalad UNIX -i utiliidid, nagu grep, uniq, wc. See ajaveebi postitus näitab toredat näidet ülesandest, mis on grepi ja muude Unixi utiliitide abil mõne sekundiga täidetud, kuid Hadoopil kulus peaaegu pool tundi.

Näiteks on selle andmekogumi suurus üle 1,7 GB. See sisaldab teavet paljude malemängude kohta, sealhulgas tehtud käigud, kes võitis jne. Oleme huvitatud lihtsalt tulemustest, seega käivitame järgmise käsu:

$haaret 'Tulemus'miljonibaas-2.22.pgn| sorteerima | uniq -c
221 [Tulemus'*']
653728 [Tulemus'0-1']
852305 [Tulemus'1-0']
690934 [Tulemus'1 / 2-1 / 2']

See võttis 4-aastasel 2-tuumalisel/4-niidilisel protsessoril umbes 15 sekundit. Nii et järgmine kord, kui lahendate suurandmete probleemi. Mõelge, kas saate selle asemel kasutada grepi.

14. grep –värv = automaatne

See suvand võimaldab grepil mustri esile tõsta selle rea sees, kust see leiti.

15. grep -i

Grepi mustri sobitamine on oma olemuselt tõstutundlik. Aga kui sa sellest ei hooli, muudab -i lipu kasutamine grep -tähestiku tundmatuks.

16. grep -n

Lipp -n näitab ridade numbreid, nii et te ei pea muretsema sama rea ​​leidmise pärast.

17. git grep

Gitil, versioonijuhtimissüsteemil, on ise sisseehitatud grep-käsk, mis töötab peaaegu nagu teie tavaline grep. Kuid seda saab kasutada tüütute torude asemel mustrite otsimiseks mis tahes pühendunud puult, kasutades natiivset git CLI -d. Näiteks kui olete oma repo peaharus, saate repost üle minna, kasutades järgmist.

(meister)$git grep <muster>

18. grep -o

-O lipp on tõesti kasulik, kui proovite regulaaravaldist siluda. See prindib kogu rea asemel ainult rea sobiva osa. Niisiis, kui teil on kaasasoleva mustri jaoks liiga palju soovimatuid ridu ja te ei saa aru, miks see juhtub. Saate kasutada -o lippu, et trükkida solvav alamstring ja põhjendada oma regulaaravaldist tagurpidi.

19. grep -x

Lipp -x trükiks rea siis ja ainult siis, kui kogu rida vastab teie esitatud regulaaravaldisele. See on mõnevõrra sarnane lipuga -w, mis trükkis rea, kui ja ainult terve sõna vastas kaasasolevale regulaaravaldisele.

20. grep -T

Koopaskriptide logide ja väljundite käsitlemisel näete suure tõenäosusega erinevate väljundveergude eristamiseks kõvasid vahelehti. Lipp -T joondab need sakid korralikult, nii et veerud on korralikult paigutatud, muutes väljundi loetavaks.

21. grep -q

See summutab väljundi ja käivitab vaikselt käsu grep. Väga kasulik teksti asendamisel või grep -i käivitamisel deemoni skriptis.

22. grep -P

Inimesed, kes on harjunud regulaaravaldise süntaksi läbima, saavad selle kasutamiseks kasutada lippu -P. Te ei pea õppima tavalist regulaaravaldist, mida grep kasutab vaikimisi.

23. grep -D [TEGEVUS]

Unixis saab peaaegu kõike käsitleda failina. Järelikult saab grepile ette anda mis tahes seadme, pistikupesa või FIFO andmevoo. Võite kasutada lippu -D, millele järgneb toiming (vaiketoiming on LUGEGE). Mõned muud võimalused on JÄTKA, et teatud seadmed vaikselt vahele jätta, ja RECURSE, et rekursiivselt katalooge ja sümbollinte vaadata.

24. Kordamine

Kui otsite antud mustrit, mis kordab tuntud lihtsamat mustrit, siis kasutage korduste arvu näitamiseks lokkis traksid

$haaret -JA [0-9]{10}

See prindib read, mis sisaldavad 10 või enama numbri pikkuseid stringe.

25. Korduskirjutused

Mõned erimärgid on reserveeritud teatud tüüpi mustrite kordamiseks. Kui soovite, saate neid kasutada lokkis trakside asemel.

? : Küsimärgile eelnev muster peab vastama nullile või ühe korra.

*: Tähe eelnev muster peaks ühtima null või enam korda.

+: Plussile eelnev muster peab ühtima või mitu korda.

25. Baitide nihked

Kui soovite teada nende ridade baitide nihet, kus sobivat avaldist leitakse, saate lipu -b abil printida ka nihkeid. Ainult rea sobiva osa nihke printimiseks võite kasutada lippu -b koos -o lipuga.

$haaret -b -või <MUSTER> [faili nimi]

Nihe tähendab lihtsalt seda, kui palju baite pärast faili algusest algab sobiv string.

26. egrep, fgrep ja rgerp

Sageli näete egrepi esilekutsumist, et kasutada laiendatud regulaaravaldise süntaksit, millest me varem rääkisime. See on aga aegunud süntaks ja soovitatav on selle kasutamist vältida. Kasutage selle asemel grep -E. Sarnaselt kasutage fgrep asemel grep -F ja rgrep asemel grep -r.

27. grep -z

Mõnikord ei ole grepi sisendiks read, mis lõppevad uue rea märgiga. Näiteks kui töötlete failinimede loendit, võivad need pärineda erinevatest allikatest. Lipp -z käsib grepil käsitleda NULL -märki rea lõpuna. See võimaldab teil käsitleda sissetulevat voogu mis tahes tavalise tekstifailina.

28. grep -a [faili nimi]

Lipp -a -s käsib grepil käsitleda kaasasolevat faili nagu tavalist teksti. Fail võib olla binaarne, kuid grep käsitleb selle sisu, nagu oleks see tekst.

29. grep -U [faili nimi]

Lipp -U käsib grepil käsitleda kaasasolevaid faile nii, nagu need oleksid binaarfailid, mitte tekst. Vaikimisi arvab grep failitüüpi, vaadates esimest paari baiti. Selle lipu kasutamine tühistab oletamise.

Grep -m NUM

Suurte failide korral võib avaldise sirvimine kesta igavesti. Kui aga soovite kontrollida ainult esimest NUM vastet, saate selle tegemiseks kasutada lippu -m. See on kiirem ja ka väljund on sageli hallatav.

Järeldus

Sysadmini igapäevane töö hõlmab suurte tekstide sõelumist. Need võivad olla turbalogid, veebi- või meiliserveri logid, kasutajate tegevus või isegi suur man -lehtede tekst. Grep annab teile nende kasutusjuhtumite käsitlemisel täiendava paindlikkuse.

Loodetavasti on ülaltoodud näited ja kasutusjuhised aidanud teil seda tarkvara elavat fossiili paremini mõista.