30 exemples de Grep per a administradors de sistemes

30 Grep Examples System Admins



Podeu trobar grep present al fons del cervell animal dels sistemes operatius Unix i similars a Unix. És un programa bàsic utilitzat per a la concordança de patrons i va ser escrit als anys 70 juntament amb la resta de l'eina UNIX que coneixem i estimem (o odiem).

Tot i que aprendre sobre llenguatges formals i expressions regulars és un tema excitant. L’aprenentatge del grep té molt més que les regles regulars. Per començar-hi i veure la bellesa i l'elegància de grep, primer heu de veure alguns exemples del món real.







Exemples útils i que us faciliten la vida. Aquí hi ha 30 opcions i casos d’ús grep comuns.



1. ps aux | grep

A ps aux es mostren tots els processos i els seus pids associats. Però sovint aquesta llista és massa llarga perquè un humà pugui inspeccionar-la. Si envieu la sortida a una ordre grep, podeu llistar els processos que s’executen tenint present una aplicació molt específica. Per exemple, podria ser sshd o nginx o httpd.



# ps a | grep sshd
arrel400 0.0 0.2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
arrel1076 0.2 0.3 95204 6816? Ss18:29 0: 00 sshd: arrel@pts/0
arrel1093 0.0 0.0 12784 932pts/0S +18:29 0: 00adherènciasshd

2. Preneu les vostres adreces IP

A la majoria de sistemes operatius podeu llistar totes les vostres interfícies de xarxa i la IP que s’assigna a aquesta interfície mitjançant l’ordre ifconfig o ip addr. Ambdues ordres generaran molta informació addicional. Però si voleu imprimir només l'adreça IP (per exemple, per als scripts de l'intèrpret d'ordres), podeu utilitzar l'ordre següent:





$ip addr | adherènciainet| awk '{print $ 2; } '
$ip addr | adherència -eninet| awk '{print $ 2; } ' #Per a línies amb només inet no inet6 (IPv6)

L'ordre ip addr obté tots els detalls (incloses les adreces IP), i després es condueix a la segona ordre grep inet que només genera les línies amb inet. Tot seguit, s'enfoca a awk print la sentència que imprimeix la segona paraula de cada línia (per dir-ho simplement).

P.S: També podeu fer-ho sense grep si ho sabeu.



3. Observant els intents SSH fallits

Si teniu un servidor orientat a Internet, amb una IP pública, es bombardegarà constantment amb intents SSH i si permeteu als usuaris tenir accés SSH basat en contrasenya (una política que no recomanaria), podeu veure tots aquests intents fallits mitjançant següent ordre grep:

# cat /var/log/auth.log | grep Fail
Mostra de mostra
Des5 16:20: 03 debian sshd[509]: Contrasenya fallidaperarrel del port 192.168.0.10052374ssh2
Des5 16:20: 07 debian sshd[509]: Contrasenya fallidaperarrel del port 192.168.0.10052374ssh2
Des5 16:20:11debian sshd[509]: Contrasenya fallidaperarrel del port 192.168.0.10052374ssh2

4. Canalització de Grep a Uniq

De vegades, grep genera molta informació. A l'exemple anterior, és possible que una sola IP intentés entrar al vostre sistema. En la majoria dels casos, només hi ha un grapat d’aquestes IP ofensives que cal identificar de manera única i fer-ne una llista negra.

#gat /on/registre/auth.log| adherència 'Fallar' | uniq -f 3

Se suposa que l'ordre uniq només imprimeix les línies úniques. La uniq -f 3 salta els tres primers camps (per passar per alt les marques de temps que mai es repeteixen) i després comença a buscar línies úniques.

5. Recollida de missatges d'error

L’ús de Grep per als registres d’accés i errors no es limita només a SSH. Els servidors web (com Nginx) registren errors de registre i registres d’accés amb molta meticulositat. Si configureu scripts de supervisió que us envien alertes quan grep 404 retorni un valor nou. Això pot ser molt útil.

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

192.168.0.100 - -[06/Des/2018: 02:20: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, com Gecko) Chrome / 70.0.3538.110 Safari / 537.36 '


192.168.0.101 - -[06/Des/2018: 02:45:16+0530] 'GET /favicon.ico HTTP / 1.1' 404 143
'Http://192.168.0.102/' 'Mozilla / 5.0 (iPad; CPU OS 12_1 com Mac OS X)
AppleWebKit / 605.1.15 (KHTML, com Gecko) Versió / 12.0 mòbil / 15E148 Safari / 604.1 '

És possible que la regla regular no sigui 404, però hi hagi algun altre filtrat de regla regular només per a clients mòbils o només per a dispositius Apple que visualitzin una pàgina web. Això us permet tenir una visió més profunda del rendiment de la vostra aplicació.

6. Llistat de paquets

Per als sistemes basats en Debian, dpkg -l llista tots els paquets instal·lats al vostre sistema. Podeu introduir-ho en una ordre grep per buscar paquets pertanyents a una aplicació específica. Per exemple:

#dpkg -la | adherència 'Vaig venir'

7. grep -v Noms del fitxer

Per llistar totes les línies que no conté un patró determinat, utilitzeu el senyalador -v. Bàsicament és el contrari d’una ordre grep normal.

8. grep -l

Enumera tots els fitxers que contenen almenys una ocurrència del patró subministrat. Això és útil quan cerqueu un patró dins d'un directori amb diversos fitxers. Només imprimeix el nom del fitxer i no la línia específica amb el patró.

9. Opció d'una sola paraula -w

$adherència -en <PATRÓ>fitxerNoms

El senyalador -w indica a grep que cerqui el patró donat com una paraula sencera i no només una subcadena d'una línia. Per exemple, abans hem buscat l'adreça IP i el patró inet va imprimir les línies amb tots dos inet i inet6 llistant adreces IPv4 i IPv6. Però si utilitzem -w marca només les línies amb inet com una paraula precedida i seguida d'espais en blanc és una coincidència vàlida.

10. Expressió regular estesa

Sovint trobareu que les expressions regulars natives de Grep són una mica limitants. A la majoria de scripts i instruccions trobareu l'ús del senyalador -E i això us permetrà introduir un patró en el que s'anomena mode estès.

Aquí teniu les ordres grep i grep -E per buscar paraules Superman i Spiderman.

$adherència ' (Super | Spider ) man'text
$adherència -I '(Super | Spider) home'text

Com podeu veure, la versió ampliada és molt més fàcil de llegir.

11. Grep per als vostres contenidors

Si teniu un gran grup de contenidors que s'executen al vostre amfitrió, podeu accedir-hi pel nom de la imatge, l'estat, els ports que exposen i molts altres atributs. Per exemple,

$acobladorps | adherència [imageName]

12. Grep per les vostres beines

Mentre estem en el tema dels contenidors. Els Kubernetes solen llançar diversos pods en un desplegament determinat. Tot i que cada pod té un nom únic, en un espai de noms determinat, normalment comencen pel nom del desplegament. En podem comprendre i enumerar tots els pods associats a un desplegament determinat.

$kubectl aconsegueix beines| adherència <nom de desplegament>

13. Grip per a Big Data

Sovint, l'anomenat anàlisi de Big Data implica una simple cerca, ordenació i recompte de patrons en un conjunt de dades determinat. Les utilitats UNIX de baix nivell com grep, uniq, wc són especialment bones en això. Aquesta publicació del bloc mostra un bon exemple d'una tasca realitzada en pocs segons mitjançant grep i altres utilitats Unix, mentre que Hadoop va trigar gairebé mitja hora.

Per exemple, aquest conjunt de dades supera els 1,7 GB. Conté informació sobre multitud de partides d'escacs, inclosos els moviments realitzats, qui va guanyar, etc. Ens interessen només els resultats, de manera que executem l'ordre següent:

$adherència 'Resultat'base de milions-2.22.pgn| ordenar | uniq -c
221 [Resultat'*']
653.728 [Resultat'0-1']
852.305 [Resultat'1-0']
690.934 [Resultat1 / 2-1 / 2 ']

Això va trigar uns 15 segons en un processador de 2 fils / 4 fils de 4 anys. Per tant, la propera vegada que solucioneu un problema de dades massives. Penseu si podeu utilitzar grep.

14. grep –color = auto

Aquesta opció permet a grep ressaltar el patró dins de la línia on s'ha trobat.

15. grep -i

La coincidència de patrons Grep és inherentment sensible a majúscules i minúscules. Però si no us interessa, fer servir la bandera -i farà que grep no distingeixi entre majúscules i minúscules.

16. grep -n

El senyalador -n mostrarà els números de línia, de manera que no us haureu de preocupar de trobar la mateixa línia més endavant.

17. git grep

Git, el sistema de control de versions, té una ordre grep integrada que funciona gairebé com el grep normal. Però es pot utilitzar per buscar patrons en qualsevol arbre compromès mitjançant la CLI git nativa, en lloc de tubs tediosos. Per exemple, si esteu a la branca mestra de la vostra reposició, podeu accedir-hi a través de:

(mestre)$git grep <patró>

18. grep -o

El senyalador -o és molt útil quan intenteu depurar una expressió regular. Imprimirà només la part coincident de la línia, en lloc de tota la línia. Per tant, en cas que obtingueu massa línia no desitjada per a un patró subministrat i no podeu entendre per què passa això. Podeu utilitzar el senyalador -o per imprimir la subcadena ofensiva i raonar sobre la vostra expressió regular des d’aquí.

19. grep -x

El senyalador -x imprimiria una línia, si i només si tota la línia coincideix amb la vostra expressió regular. Això és una mica similar al senyalador -w que imprimia una línia si i només una paraula sencera coincidia amb la regla proporcionada.

20. grep -T

Quan es tracta de registres i sortides d'un script d'intèrpret d'ordres, és més que probable que trobeu pestanyes dures per diferenciar entre diferents columnes de sortida. El senyalador -T alinearà perfectament aquestes pestanyes de manera que les columnes estiguin ordenades de manera que la lectura sigui humana fàcilment llegible.

21. grep -q

Això suprimeix la sortida i executa silenciosament l'ordre grep. Molt útil en substituir text o en executar grep en un script de dimoni.

22. grep -P

Les persones que estiguin acostumades a controlar la sintaxi de les expressions regulars poden utilitzar el senyalador -P per utilitzar-ho exactament. No heu d'aprendre l'expressió regular bàsica, que grep utilitza per defecte.

23. grep -D [ACCIÓ]

A Unix, gairebé tot es pot tractar com un fitxer. En conseqüència, qualsevol dispositiu, un sòcol o un flux de dades FIFO es poden alimentar a grep. Podeu utilitzar el senyalador -D seguit d’una ACCIÓ (l’acció per defecte és LLEGIR). Algunes altres opcions són SALTAR per saltar silenciosament dispositius específics i RECURSE per passar recursivament a directoris i enllaços simbòlics.

24. Repetició

Si cerqueu un patró determinat que sigui una repetició d'un patró més simple conegut, utilitzeu claus per indicar el nombre de repeticions

$adherència -I [0-9]{10}

Això imprimeix línies que contenen cadenes de deu dígits o més.

25. Taquigrafes de repetició

Alguns caràcters especials es reserven per a un tipus específic de repetició de patrons. Podeu utilitzar-los en lloc de claus arrissades, si s’adeqüen a les vostres necessitats.

? : El patró anterior al signe d'interrogació ha de coincidir amb zero o una vegada.

*: El patró anterior a l'estrella ha de coincidir amb zero o més vegades.

+: El patró que precedeix el plus ha de coincidir una o més vegades.

25. Desplaçaments de bytes

Si voleu saber veure el desplaçament de bytes de les línies on es troba l'expressió coincident, podeu utilitzar el senyalador -b per imprimir també els desplaçaments. Per imprimir el desplaçament de la part d'una línia que coincideix, podeu utilitzar el senyalador -b amb el senyalador -o.

$adherència -b -o <PATRÓ> [nom de l'arxiu]

Offset significa simplement, després de quants bytes des del començament del fitxer comença la cadena coincident.

26. egrep, fgrep i rgerp

Sovint veureu la invocació d’egrep per utilitzar la sintaxi d’expressió regular ampliada que hem comentat anteriorment. Tanmateix, es tracta d'una sintaxi obsoleta i es recomana evitar l'ús d'aquesta. Utilitzeu grep -E. De la mateixa manera, utilitzeu grep -F, en lloc de fgrep i grep -r en lloc de rgrep.

27. grep -z

De vegades, l'entrada a grep no són línies que acaben amb un caràcter de nova línia. Per exemple, si esteu processant una llista de noms de fitxers, poden provenir de diferents fonts. El senyalador -z indica a grep que tracti el caràcter NULL com el final de línia. Això us permet tractar el flux entrant com qualsevol fitxer de text normal.

28. grep -a [fileName]

El senyalador -a indica a grep que tracta el fitxer subministrat com si fos un text normal. El fitxer podria ser binari, però grep tractarà el contingut dins, com si fos text.

29. grep -U [fileName]

El senyalador -U indica a grep que tracti els fitxers subministrats com si fossin fitxers binaris i no text. Per defecte, grep endevina el tipus de fitxer mirant els primers bytes. L’ús d’aquest indicador anul·la que suposa que funciona.

Grep -m NUM

Amb els fitxers grans, agafar una expressió pot trigar per sempre. Tot i això, si voleu comprovar només els primers NUM números de coincidències, podeu utilitzar el senyalador -m per aconseguir-ho. És més ràpid i la sortida sovint també és manejable.

Conclusió

Una gran quantitat de treballs quotidians d'un administrador de sistemes consisteix a passar per grans franges de text. Poden ser registres de seguretat, registres del vostre servidor web o de correu, activitat de l’usuari o fins i tot text ampli de pàgines manuals. Grep us proporciona una mica més de flexibilitat a l’hora de tractar aquests casos d’ús.

Amb sort, els exemples i casos d’ús anteriors us han ajudat a entendre millor aquest fòssil viu d’un programari.