30 „Grep“ sistemos administratorių pavyzdžių

30 Grep Examples System Admins



„Grep“ dabartį galite rasti giliai „Unix“ ir „Unix“ tipo operacinių sistemų gyvūnų smegenyse. Tai yra pagrindinė programa, naudojama modelių derinimui, ir ji buvo parašyta 70 -aisiais kartu su likusiu UNIX įrankiu, kurį žinome ir mylime (arba nekenčiame).

Oficialių kalbų ir įprastų posakių mokymasis yra įdomi tema. Grep mokymasis turi daug daugiau nei regexes. Norėdami pradėti ir pamatyti grep grožį bei eleganciją, pirmiausia turite pamatyti keletą realaus pasaulio pavyzdžių.







Pavyzdžiai, kurie yra patogūs ir šiek tiek palengvina jūsų gyvenimą. Čia yra 30 tokių grep įprastų naudojimo atvejų ir parinkčių.



1. ps aux | grep

Ps aux išvardija visus procesus ir su jais susijusius pidus. Tačiau dažnai šis sąrašas yra per ilgas, kad žmogus galėtų jį patikrinti. Prijungę išvestį į komandą „grep“, galite išvardyti procesus, vykstančius turint omenyje labai konkrečią programą. Pavyzdžiui, tai gali būti sshd arba nginx arba httpd.



# ps iki | grep sshd
šaknis400 0,0 0.2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
šaknis1076 0.2 0.3 95204 6816? Ss18:29 0: 00 sshd: root@tšk/0
šaknis1093 0,0 0,0 12784 932tšk/0S+18:29 0: 00sukibimassshd

2. Paspaudę savo IP adresus

Daugelyje operacinių sistemų galite išvardyti visas savo tinklo sąsajas ir IP, priskirtą tai sąsajai, naudodami komandą ifconfig arba ip addr. Abi šios komandos duos daug papildomos informacijos. Bet jei norite spausdinti tik IP adresą (tarkime, apvalkalo scenarijus), galite naudoti toliau nurodytą komandą:





$ip adresas | sukibimasinet| awk „{spausdinti 2 USD; } '
$ip adresas | sukibimas inet| awk „{spausdinti 2 USD; } ' #Linijoms, kuriose tik įvestas, o ne inet6 (IPv6)

„Ip addr“ komanda gauna visą informaciją (įskaitant IP adresus), tada ji nukreipiama į antrąją komandą „grep inet“, kuri pateikia tik eilutes, kuriose yra „inet“. Tada jis įtraukiamas į „awk“ atspausdinti teiginį, kuris spausdina antrą žodį kiekvienoje eilutėje (paprasčiau tariant).

P.S: Taip pat galite tai padaryti be grep, jei žinote, kad gerai žinote.



3. Žvelgiant į nesėkmingus SSH bandymus

Jei turite prieigą prie interneto turintį viešą IP, jis bus nuolat užpultas SSH bandymais ir, jei leisite vartotojams turėti slaptažodžiu pagrįstą SSH prieigą (politikos, kurios nerekomenduočiau), galite pamatyti visus tokius nesėkmingus bandymus naudodami tokia grep komanda:

# katė /var/log/auth.log | grep Nepavyko
Išimtas pavyzdys
Gruodžio mėn5 16:dvidešimt: 03 debian sshd[509]: Nepavyko slaptažodisdėlšaknis iš 192.168.0.100 prievado52374ssh2
Gruodžio mėn5 16:dvidešimt: 07 debian sshd[509]: Nepavyko slaptažodisdėlšaknis iš 192.168.0.100 prievado52374ssh2
Gruodžio mėn5 16:dvidešimt:vienuolikadebian sshd[509]: Nepavyko slaptažodisdėlšaknis iš 192.168.0.100 prievado52374ssh2

4. „Greip“ tiekimas į „Uniq“

Kartais grep pateikia daug informacijos. Pirmiau pateiktame pavyzdyje vienas IP galėjo bandyti patekti į jūsų sistemą. Daugeliu atvejų yra tik keletas tokių įžeidžiančių IP, kuriuos reikia unikaliai identifikuoti ir įtraukti į juodąjį sąrašą.

#katė /kur/žurnalą/auth.log| sukibimas „Nepavyko“ | unikalus -f 3

„Uniq“ komanda turėtų spausdinti tik unikalias eilutes. „Uniq -f 3“ praleidžia pirmuosius tris laukus (kad nepastebėtų laiko žymių, kurios niekada nesikartoja) ir tada pradeda ieškoti unikalių eilučių.

5. Kreipimasis dėl klaidų pranešimų

„Grep“ naudojimas prieigos ir klaidų žurnalams neapsiriboja tik SSH. Žiniatinklio serveriai (pvz., „Nginx“) registruoja klaidas ir prieigos žurnalus gana kruopščiai. Jei nustatysite stebėjimo scenarijus, kurie jums siunčia įspėjimus, kai grep 404 grąžina naują reikšmę. Tai gali būti gana naudinga.

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

192.168.0.100 - -[06/Gruodžio mėn/2018 m: 02:dvidešimt: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, pvz., „Gecko“) „Chrome“/70.0.3538.110 „Safari“/537.36 “


192.168.0.101 - -[06/Gruodžio mėn/2018 m: 02:Keturi, penki:16+0530] „GET /favicon.ico HTTP /1.1“ 404 143
„http://192.168.0.102/“ „Mozilla“/5.0 („iPad“; procesoriaus OS 12_1, kaip „Mac OS X“)
„AppleWebKit“/605.1.15 (KHTML, pvz., „Gecko“) versija/12.0 mobilusis/15E148 „Safari“/604.1 “

Reguliarusis reiškinys gali būti ne 404, bet kai kurie kiti reguliaraus reguliavimo filtrai, skirti tik mobiliesiems klientams arba tik „Apple“ įrenginiams, peržiūrintiems tinklalapį. Tai leidžia geriau suprasti programos našumą.

6. Paketų sąrašas

„Debian“ sistemose dpkg -l pateikiami visi jūsų sistemoje įdiegti paketai. Galite įvesti komandą į „grep“ ir ieškoti paketų, priklausančių konkrečiai programai. Pavyzdžiui:

#dpkg -jie | sukibimas 'Aš atėjau'

7. grep -v failasVardai

Norėdami išvardyti visas eilutes nedaryti yra nurodytas modelis, naudokite vėliavą -v. Tai iš esmės yra priešinga įprastai grep komandai.

8. grep -l

Jame išvardyti visi failai, kuriuose yra bent vienas pateikto modelio atvejis. Tai naudinga, kai ieškote modelio kataloge, kuriame yra keli failai. Jis spausdina tik failo pavadinimą, o ne konkrečią eilutę su modeliu.

9. Vieno žodžio parinktis -w

$sukibimas <RAŠTAS>fileNames

Vėliava -w liepia grep ieškoti nurodyto modelio kaip viso žodžio, o ne tik eilutės eilutės. Pavyzdžiui, anksčiau ieškojome IP adreso ir modelio inet spausdino eilutes abiem inet ir inet6 nurodant IPv4 ir IPv6 adresus. Bet jei mes naudojome vėliavą tik su linijomis su inet kaip žodis, prieš kurį eina ir po kurio eina tuščios vietos, yra tinkama atitiktis.

10. Išplėstinė reguliarioji išraiška

Dažnai pastebėsite, kad įprastos išraiškos, kilusios iš „Grep“, šiek tiek riboja. Daugelyje scenarijų ir instrukcijų rasite -E vėliavos naudojimą ir tai leis jums įvesti modelį vadinamuoju išplėstiniu režimu.

Štai grep ir grep -E komandos ieškoti žodžių Supermenas ir Žmogus -voras.

$sukibimas ' (Super | Voras ) žmogus'tekstas
$sukibimas -IR „(Super | voras) žmogus“tekstas

Kaip matote, išplėstinė versija yra daug lengviau skaitoma.

11. Čiupkite savo konteinerius

Jei jūsų priegloboje veikia didelė konteinerių grupė, galite juos suskirstyti pagal vaizdo pavadinimą, būseną, prievadus, kuriuos jie atskleidžia, ir daugelį kitų atributų. Pavyzdžiui,

$dokininkasps | sukibimas [imageName]

12. Krapštyk savo ankštis

Kol mes kalbame apie konteinerius. „Kubernetes“ dažnai linkę paleisti kelias ankštis tam tikru dislokavimu. Nors kiekviena dėžutė turi unikalų pavadinimą, tam tikroje vardų erdvėje jie paprastai prasideda diegimo pavadinimu. Mes galime tai suprasti ir išvardyti visas su tam tikru diegimu susijusias ankštis.

$kubectl gauti ankštis| sukibimas <deploymentName>

13. Grip for Big data

Dažnai vadinamoji didžiųjų duomenų analizė apima paprastą tam tikro duomenų rinkinio modelių paiešką, rūšiavimą ir skaičiavimą. Žemo lygio UNIX komunalinės paslaugos, tokios kaip grep, uniq, wc, yra ypač geros. Šis tinklaraščio įrašas rodo puikų užduoties, įvykdytos per kelias sekundes naudojant grep ir kitas „Unix“ paslaugas, pavyzdį, o „Hadoop“ užtruko beveik pusvalandį.

Pavyzdžiui, šis duomenų rinkinys yra didesnis nei 1,7 GB. Jame yra informacijos apie daugybę šachmatų rungtynių, įskaitant atliktus judesius, kas laimėjo ir tt. Mus domina tik rezultatai, todėl vykdome šią komandą:

$sukibimas 'Rezultatas'milijonų bazė2.22.pgn| rūšiuoti | unikalus -c
221 [Rezultatas'*']
653728 [Rezultatas„0-1“]
852305 [Rezultatas„1-0“]
690934 [Rezultatas„1 / 2-1 / 2“]

Tai truko apie 15 sekundžių 4 metų 2 branduolių/4 siūlų procesoriui. Taigi kitą kartą spręsite didelių duomenų problemą. Pagalvokite, ar galite naudoti „grep“.

14. grep –spalva = auto

Ši parinktis leidžia grep paryškinti raštą linijos viduje, kurioje jis buvo rastas.

15. grep -i

„Grep“ modelio atitikimas iš esmės skiria didžiąsias ir mažąsias raides. Bet jei jums tai nerūpi, naudojant -i vėliavą, grep didžiosios ir mažosios raidės bus nejautrios.

16. grep -n

Vėliavoje -n bus rodomi eilučių numeriai, todėl vėliau nereikės nerimauti suradus tą pačią eilutę.

17. git grep

„Git“, versijų valdymo sistema, turi įmontuotą „grep“ komandą, kuri veikia beveik taip pat, kaip ir jūsų įprastas „grep“. Tačiau jis gali būti naudojamas ieškant modelių bet kuriame medyje, naudojant vietinį „git CLI“, o ne varginančius vamzdžius. Pavyzdžiui, jei esate pagrindinėje atpirkimo sandorio šakoje, galite pereiti prie atpirkimo naudodami:

(meistras)$git grep <modelis>

18. grep -o

-O vėliava tikrai naudinga, kai bandote derinti reguliariąją reikšmę. Bus spausdinama tik atitinkanti eilutės dalis, o ne visa eilutė. Taigi, jei gausite per daug nepageidaujamos eilutės pateiktam modeliui, ir negalite suprasti, kodėl taip atsitinka. Galite naudoti vėliavą -o, kad atspausdintumėte įžeidžiančią antrinę eilutę ir nurodytumėte savo reguliariąją reikšmę atgal.

19. grep -x

Vėliava -x atspausdintų eilutę tik tada ir tik tada, jei visa eilutė atitiktų jūsų pateiktą reguliariąją reikšmę. Tai šiek tiek panašu į vėliavą -w, kuri išspausdino eilutę, jei ir tik visas žodis atitiko pateiktą reguliariąją formulę.

20. grep -T

Kai tvarkote žurnalus ir išvesties iš apvalkalo scenarijus, daugiau nei tikėtina, kad susidursite su sunkiais skirtukais, kad atskirtumėte skirtingus išvesties stulpelius. Vėliava -T tvarkingai sulygiuos šiuos skirtukus, kad stulpeliai būtų tvarkingai išdėstyti, todėl išvestis būtų lengvai skaitoma.

21. grep -q

Tai slopina išvestį ir tyliai paleidžia komandą grep. Labai naudinga keičiant tekstą arba paleidžiant „grep“ demono scenarijuje.

22. grep -P

Žmonės, kurie yra įpratę naudoti reguliariosios išraiškos sintaksę, gali naudoti -P vėliavą, kad galėtų naudoti būtent tai. Jums nereikia mokytis pagrindinės reguliariosios išraiškos, kurią grep naudoja pagal numatytuosius nustatymus.

23. grep -D [VEIKSMAS]

„Unix“ beveik viską galima traktuoti kaip failą. Todėl grep gali būti tiekiamas bet koks įrenginys, lizdas ar FIFO duomenų srautas. Galite naudoti vėliavą -D ir po to VEIKSMAS (numatytasis veiksmas yra SKAITYTI). Keletas kitų variantų yra SKIP, jei norite tyliai praleisti tam tikrus įrenginius, ir RECURSE, kad rekursyviai eitumėte per katalogus ir nuorodas.

24. Kartojimas

Jei ieškote nurodyto modelio, kuris yra žinomo paprastesnio modelio kartojimas, naudokite garbanotas petnešas, kad nurodytumėte pakartojimų skaičių

$sukibimas -IR [0-9]{10}

Taip spausdinamos eilutės, kuriose yra 10 ar daugiau skaitmenų ilgio eilutės.

25. Kartojimo šriftai

Kai kurie specialūs simboliai yra skirti tam tikram šablonų kartojimui. Vietoj garbanotų petnešų galite jas naudoti, jei jos atitinka jūsų poreikius.

? : Modelis prieš klaustuką turi sutapti su nuliu arba vieną kartą.

*: Modelis prieš žvaigždę turi sutapti su nuliu ar daugiau kartų.

+: Modelis prieš pliusą turi sutapti vieną ar kelis kartus.

25. Baitų poslinkiai

Jei norite sužinoti eilučių, kuriose randama atitinkama išraiška, baitų poslinkį, galite naudoti žymę -b ir atspausdinti poslinkius. Norėdami atspausdinti tik atitinkančios eilutės dalies poslinkį, galite naudoti vėliavą -b su -o vėliava.

$sukibimas -b -arba <RAŠTAS> [failo pavadinimas]

Poslinkis reiškia tik tai, kiek baitų nuo failo pradžios prasideda atitinkama eilutė.

26. egrep, fgrep ir rgerp

Dažnai matysite egrep šaukimą, norėdami naudoti išplėstinę reguliariosios išraiškos sintaksę, apie kurią kalbėjome anksčiau. Tačiau tai yra nebenaudojama sintaksė, todėl rekomenduojama jos nenaudoti. Vietoj to naudokite grep -E. Panašiai naudokite grep -F, o ne fgrep, o grep -r vietoj rgrep.

27. grep -z

Kartais grep įvestis nėra eilutės, kurios baigiasi naujos eilutės simboliu. Pvz., Jei tvarkote failų pavadinimų sąrašą, jie gali būti gauti iš skirtingų šaltinių. Vėliava -z nurodo grep traktuoti NULL simbolį kaip eilutės pabaigą. Tai leidžia traktuoti gaunamą srautą kaip bet kurį įprastą teksto failą.

28. grep -a [failo pavadinimas]

Vėliava -a nurodo grep traktuoti pateiktą failą taip, lyg tai būtų įprastas tekstas. Failas gali būti dvejetainis, tačiau „grep“ su jo turiniu elgsis taip, tarsi tai būtų tekstas.

29. grep -U [failo pavadinimas]

Vėliava -U nurodo grep traktuoti pateiktus failus taip, tarsi jie būtų dvejetainiai failai, o ne tekstas. Pagal numatytuosius nustatymus „grep“ atspėja failo tipą žiūrėdamas į pirmuosius kelis baitus. Šios vėliavos naudojimas panaikina spėjimą.

Grep -m NUM

Esant dideliems failams, išraiškos ieškojimas gali užtrukti amžinai. Tačiau, jei norite patikrinti tik pirmuosius NUM atitikčių skaičius, galite tai padaryti naudodami vėliavą -m. Jis yra greitesnis, o rezultatas taip pat dažnai valdomas.

Išvada

Daug kasdienio sysadmino darbo yra persijoti didelius teksto plotus. Tai gali būti saugos žurnalai, jūsų žiniatinklio ar pašto serverio žurnalai, vartotojo veikla ar net didelis puslapių tekstas. „Grep“ suteikia jums daugiau lankstumo sprendžiant šiuos naudojimo atvejus.

Tikimės, kad keli aukščiau pateikti pavyzdžiai ir naudojimo atvejai padėjo jums geriau suprasti šią gyvą programinės įrangos fosiliją.