30 Grep példa a rendszergazdákra

30 Grep Examples System Admins



A grep jelenlétét mélyen a Unix és a Unix-szerű operációs rendszerek állat agyában találja. Ez egy alapvető program, amelyet a minták illesztésére használnak, és a 70 -es években írták a UNIX eszköz többi részével együtt, amelyeket ismerünk és szeretünk (vagy gyűlölünk).

Míg a hivatalos nyelvek és a rendszeres kifejezések megismerése izgalmas téma. A grep tanulásának sokkal több dolga van, mint a regexeknek. A kezdéshez és a grep szépségének és eleganciájának megtekintéséhez először néhány valós példát kell látnia.







Példák, amelyek praktikusak és megkönnyítik az életedet. Íme 30 ilyen grep közhelyes használati eset és lehetőség.



1. ps aux | grep

A ps aux felsorolja az összes folyamatot és a hozzájuk tartozó pid -eket. De gyakran ez a lista túl hosszú ahhoz, hogy az ember megvizsgálja. Ha a kimenetet egy grep parancsra irányítja, felsorolhatja a nagyon specifikus alkalmazást szem előtt tartó folyamatokat. Például lehet sshd vagy nginx vagy httpd.



# ps - | grep sshd
gyökér400 0.0 0.2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-D
gyökér1076 0.2 0.3 95204 6816? Ss18:29 0: 00 sshd: root@pont/0
gyökér1093 0.0 0.0 12784 932pont/0S+18:29 0: 00markolatsshd

2. Gratulál az IP -címekhez

A legtöbb operációs rendszerben az ifconfig vagy az ip addr paranccsal felsorolhatja az összes hálózati interfészt és az IP -címet, amely hozzá van rendelve. Mindkét parancs sok további információt ad ki. De ha csak az IP -címet szeretné kinyomtatni (mondjuk shell parancsfájlok esetén), akkor használja az alábbi parancsot:





$ip cím | markolatinet| awk '{print $ 2; } '
$ip cím | markolat -ban beninet| awk '{print $ 2; } ' #Az inet nem inet6 vonalakhoz (IPv6)

Az ip addr parancs megkapja az összes részletet (beleértve az IP -címeket is), majd a második grep inet parancshoz kerül, amely csak azokat a sorokat adja ki, amelyekben inet van. Ezt azután az awk printbe csöpögteti az utasítás, amely minden sorban kinyomtatja a második szót (leegyszerűsítve).

P.S: Ezt a grep nélkül is megteheti, ha jól tudja.



3. A sikertelen SSH kísérletek vizsgálata

Ha internetes kiszolgálója van, nyilvános IP -címmel, akkor azt folyamatosan SSH -kísérletek fogják bombázni, és ha engedélyezi a felhasználóknak, hogy jelszóalapú SSH -hozzáféréssel rendelkezzenek (ezt a házirendet nem ajánlom), akkor az összes ilyen sikertelen kísérletet a a következő grep parancsot:

# macska /var/log/auth.log | grep Fail
Minta ki
December5 16:húsz: 03 debian sshd[509]: Sikertelen jelszószámáraroot 192.168.0.100 portról52374ssh2
December5 16:húsz: 07 debian sshd[509]: Sikertelen jelszószámáraroot 192.168.0.100 portról52374ssh2
December5 16:húsz:tizenegydebian sshd[509]: Sikertelen jelszószámáraroot 192.168.0.100 portról52374ssh2

4. A Grep csövezése az Uniq -ba

Néha a grep sok információt ad ki. A fenti példában lehet, hogy egyetlen IP próbálta belépni a rendszerébe. A legtöbb esetben csak néhány ilyen jogsértő IP létezik, amelyeket egyedileg kell azonosítani és feketelistára tenni.

#macska /ahol/napló/auth.log| markolat 'Nem' | uniq -f 3

A uniq parancsnak csak az egyedi sorokat kell kinyomtatnia. A uniq -f 3 kihagyja az első három mezőt (hogy figyelmen kívül hagyja a soha nem ismétlődő időbélyegeket), majd egyedi vonalakat keres.

5. Hibaüzenetek keresése

A Grep használata a hozzáférési és hibanaplókhoz nem korlátozódik csak az SSH -ra. A webszerverek (például az Nginx) naplózási hibákat és hozzáférési naplókat nagyon aprólékosan. Ha felügyeleti parancsfájlokat állít be, amelyek riasztásokat küldenek, amikor a grep 404 új értéket ad vissza. Ez nagyon hasznos lehet.

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

192.168.0.100 - -[06/December/2018: 02:húsz: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, mint a Gecko) Chrome/70.0.3538.110 Safari/537.36 '


192.168.0.101 - -[06/December/2018: 02:Négy öt:16+0530] 'GET /favicon.ico HTTP /1.1' 404 143
'http://192.168.0.102/' „Mozilla/5.0 (iPad; CPU OS 12_1, mint a Mac OS X)
AppleWebKit/605.1.15 (KHTML, mint a Gecko) Verzió/12.0 Mobile/15E148 Safari/604.1 '

Előfordulhat, hogy a regex nem 404, hanem más regex szűrés csak mobil ügyfelek vagy csak egy weboldalt megtekintő Apple eszközök számára. Ez lehetővé teszi, hogy mélyebb betekintést nyerjen az alkalmazás teljesítményébe.

6. Csomagok listázása

Debian alapú rendszerek esetén a dpkg -l felsorolja a rendszerre telepített összes csomagot. Ezt egy grep parancsba csövezheti, hogy egy adott alkalmazáshoz tartozó csomagokat keressen. Például:

#dpkg -az | markolat 'Jöttem'

7. grep -v fileNames

Az összes sor felsorolása ne tedd adott mintát tartalmaz, használja a -v jelzőt. Ez alapvetően a rendes grep parancs ellentéte.

8. grep -l

Az összes olyan fájlt felsorolja, amelyek a mellékelt minta legalább egy előfordulását tartalmazzák. Ez akkor hasznos, ha mintát keres egy több fájlból álló könyvtárban. Csak a fájl nevét nyomtatja ki, és nem a mintát tartalmazó sort.

9. Egy szó opció -w

$markolat -ban ben <MINTA>fileNames

A -w zászló azt jelzi a grep -nek, hogy az adott mintát egész szóként keresi, és ne csak egy sor részsorozatát. Például korábban az IP -címet és a mintát kerestük inet mindkettővel kinyomtatta a sorokat inet és inet6 az IPv4 és az IPv6 címeket is felsorolja. De ha a -w jelzőt használjuk, akkor csak a sorokat használjuk inet mint szó, amelyet szóközök követnek és követnek, érvényes egyezés.

10. Kiterjesztett reguláris kifejezés

Gyakran tapasztalja, hogy a Grep natív reguláris kifejezései kissé korlátozóak. A legtöbb szkriptben és utasításban megtalálható az -E jelző használata, és ez lehetővé teszi a minta bevitelét úgynevezett kiterjesztett módba.

Itt vannak a grep és a grep -E parancsok a Superman és a Pókember szavak keresésére.

$markolat ' (Szuper | Pók ) ember'szöveg
$markolat -ÉS '(Szuper | Pók) ember'szöveg

Mint látható, a bővített változat sokkal könnyebben olvasható.

11. Térjen a tartályaihoz

Ha a tárolón nagy fürt fut a gazdagépen, akkor a kép neve, állapota, a kitett portok és sok más attribútum alapján áttekintheti őket. Például,

$dokkmunkásps | markolat [imageName]

12. Kapkodj a hüvelyedért

Miközben a konténerek témájánál tartunk. A Kubernetes gyakran hajlamos több tokot indítani egy adott telepítés alatt. Bár minden egyes podnak egyedi neve van, egy adott névtérben általában a telepítési névvel kezdődnek. Ezt fel tudjuk venni, és felsorolhatjuk az adott telepítéshez tartozó összes tokot.

$kubectl kap hüvelyeket| markolat <deploymentName>

13. Grip for Big data

Gyakran előfordul, hogy az úgynevezett Big Data elemzés magában foglalja a minták egyszerű keresését, rendezését és számlálását egy adott adatkészletben. Ebben különösen jók az alacsony szintű UNIX segédprogramok, mint a grep, uniq, wc. Ez a blogbejegyzés szép példát mutat arra, hogy a grep és más Unix segédprogramok segítségével néhány másodperc alatt elvégezték a feladatot, miközben a Hadoop csaknem fél órát vett igénybe.

Például ez az adatkészlet több mint 1,7 GB méretű. Sok sakkmeccsről tartalmaz információt, beleértve a végrehajtott lépéseket, ki nyert, stb. Csak az eredmények érdekelnek, ezért a következő parancsot futtatjuk:

$markolat 'Eredmény'millió bázis-2.22.pgn| fajta | uniq -c
221 [Eredmény'*']
653728 [Eredmény'0-1']
852305 [Eredmény'1-0']
690934 [Eredmény'1 / 2-1 / 2']

Ez körülbelül 15 másodpercet vett igénybe egy 4 éves 2 magos/4 szálú processzoron. Tehát ha legközelebb nagy adatokkal kapcsolatos problémát old meg. Gondold át, használhatod -e a grep -t.

14. grep –szín = auto

Ezzel az opcióval a grep kiemeli a mintát azon a vonalon belül, ahol megtalálta.

15. grep -i

A Grep-minta illesztése eleve megkülönbözteti a kis- és nagybetűket. De ha nem törődik ezzel, akkor az -i zászló használatával a grep kis- és nagybetűk érzéketlenné válnak.

16. grep -n

A -n zászló mutatja a sorszámokat, így nem kell aggódnia, hogy később megtalálja ugyanazt a sort.

17. git grep

A Git, a verziókezelő rendszer magában foglal egy beépített grep parancsot, amely nagyjából úgy működik, mint a szokásos grep. De használható minták keresésére bármely elkötelezett fán a natív git CLI használatával unalmas csövek helyett. Például, ha Ön a repó fő ágában van, akkor a repo segítségével átkattinthat:

(fő-)$git grep <minta>

18. grep -o

Az -o jelző nagyon hasznos, ha egy regex hibakeresését próbálja meg. Csak a sor megfelelő részét fogja kinyomtatni a teljes sor helyett. Tehát abban az esetben, ha túl sok nem kívánt vonalat kap a mellékelt mintához, és nem tudja megérteni, miért történik ez. A -o zászló segítségével kinyomtathatja a szabálysértő alstringet, és onnan visszafelé indokolhatja a regexet.

19. grep -x

A -x jelző akkor és csak akkor nyomtat egy sort, ha a teljes sor megegyezik a mellékelt reguláris kifejezéssel. Ez némileg hasonlít a -w jelzőhöz, amely akkor nyomtatott egy sort, ha és csak egy egész szó egyezett a mellékelt reguláris kifejezéssel.

20. grep -T

Ha shell parancsfájlok naplóival és kimeneteivel foglalkozik, akkor több mint valószínű, hogy kemény lapokkal találkozik a kimeneti oszlopok megkülönböztetéséhez. A -T zászló szépen illeszti ezeket a füleket, így az oszlopok szépen el vannak rendezve, így a kimenet ember számára olvasható.

21. grep -q

Ez elnyomja a kimenetet, és csendben futtatja a grep parancsot. Nagyon hasznos szöveg cseréjekor, vagy a grep futtatásakor démon szkriptben.

22. grep -P

Azok, akik a reguláris kifejezés szintaxisát szokták használni, a -P jelzővel pontosan ezt használhatják. Nem kell megtanulnia az alapvető reguláris kifejezést, amelyet a grep alapértelmezés szerint használ.

23. grep -D [AKCIÓ]

A Unixban szinte mindent fájlként lehet kezelni. Következésképpen bármilyen eszköz, foglalat vagy FIFO adatfolyam betáplálható a grep -be. Használhatja a -D zászlót, majd ezt követi az ACTION (az alapértelmezett művelet a READ). Néhány más lehetőség a SKIP, hogy némán átugorja az egyes eszközöket, és a RECURSE, hogy rekurzívan végigmenjen a könyvtárakon és a hivatkozásokon.

24. Ismétlés

Ha adott mintát keres, amely egy ismert egyszerűbb minta ismétlése, akkor göndör zárójelekkel jelölje meg az ismétlések számát

$markolat -ÉS [0-9]{10}

Ez 10 vagy több számjegyből álló karakterláncokat tartalmazó sorokat nyomtat.

25. Ismétlés gyorsírások

Egyes speciális karakterek egy bizonyos típusú minta ismétlésre vannak fenntartva. Ezeket használhatja göndör fogszabályozó helyett, ha megfelel az Ön igényeinek.

? : A kérdőjel előtti minta nullával vagy egyszer kell egyezzen.

*: A csillagot megelőző mintának nulla vagy több alkalommal kell megegyeznie.

+: A pluszt megelőző mintának egy vagy több alkalommal meg kell egyeznie.

25. Bájteltolások

Ha szeretné látni a sorok bájteltolását, ahol megtalálható a megfelelő kifejezés, akkor a -b jelzővel is nyomtathatja az eltolásokat. Ha csak a vonal megfelelő részének eltolását szeretné kinyomtatni, használja a -b zászlót a -o jelzővel.

$markolat -b -vagy <MINTA> [fájl név]

Az eltolás egyszerűen azt jelenti, hogy a fájl elejétől kezdődő hány bájt után kezdődik a megfelelő karakterlánc.

26. egrep, fgrep és rgerp

Gyakran látni fogja az egrep meghívását a korábban tárgyalt kiterjesztett reguláris kifejezés szintaxisának használatához. Ez azonban egy elavult szintaxis, ezért javasoljuk, hogy kerülje ennek használatát. Használja a grep -E -t. Hasonlóképpen használja a grep -F parancsot az fgrep helyett, és a grep -r parancsot az rgrep helyett.

27. grep -z

Néha a grep bemenete nem egy újsoros karakterrel végződő sor. Például, ha a fájlnevek listáját dolgozza fel, azok különböző forrásokból származhatnak. A -z zászló azt jelzi a grep -nek, hogy a NULL karaktert a sor végeként kezelje. Ez lehetővé teszi, hogy a bejövő adatfolyamot normál szövegfájlként kezelje.

28. grep -a [fájlnév]

Az -a jelző azt jelzi a grep -nek, hogy úgy kezelje a mellékelt fájlt, mintha normál szöveg lenne. A fájl lehet bináris, de a grep a benne lévő tartalmat úgy kezeli, mintha szöveg lenne.

29. grep -U [fájlnév]

A -U jelző arra utasítja a grep -t, hogy úgy kezelje a mellékelt fájlokat, mintha bináris fájlok lennének, nem pedig szöveg. Alapértelmezés szerint a grep az első néhány bájt alapján kitalálja a fájltípust. Ennek a zászlónak a használata felülbírálja a feltételezést.

Grep -m NUM

Nagy fájlok esetén a kifejezés után kapkodás örökké tarthat. Ha azonban csak az első NUM egyezés számát szeretné ellenőrizni, akkor használja a -m jelzőt. Gyorsabb, és a kimenet gyakran kezelhető is.

Következtetés

A rendszergazda sok mindennapi feladata a nagy méretű szövegek szitálása. Ezek lehetnek biztonsági naplók, web- vagy levelezőszerverről származó naplók, felhasználói tevékenységek vagy akár kézi oldalak nagy szövege. A Grep extra rugalmasságot biztosít Önnek az ilyen használati esetek kezelésében.

Remélhetőleg a fenti néhány példa és használati eset segített jobban megérteni a szoftver élő fosszíliáját.