Sistem Yöneticileri için 30 Grep Örneği

30 Grep Examples System Admins



Grep'i Unix ve Unix benzeri işletim sistemlerinin hayvan beyninin derinliklerinde bulabilirsiniz. Kalıp eşleştirme için kullanılan temel bir programdır ve 70'lerde bildiğimiz ve sevdiğimiz (veya nefret ettiğimiz) UNIX aracının geri kalanıyla birlikte yazılmıştır.

Resmi dilleri ve düzenli ifadeleri öğrenmek heyecan verici bir konudur. Grep öğrenmek, normal ifadelerden çok daha fazlasını içerir. Başlamak ve grep'in güzelliğini ve zarafetini görmek için önce gerçek dünyadan bazı örnekleri görmeniz gerekir.







Kullanışlı ve hayatınızı biraz daha kolaylaştıran örnekler. İşte böyle 30 grep yaygın kullanım durumu ve seçeneği.



1. ps yardımcı | grep

ps aux, tüm süreçleri ve bunlarla ilişkili pid'leri listeler. Ancak çoğu zaman bu liste bir insanın incelemesi için çok uzundur. Çıktıyı bir grep komutuna aktararak, çok özel bir uygulama ile çalışan işlemleri göz önünde bulundurarak listeleyebilirsiniz. Örneğin, sshd veya nginx veya httpd olabilir.



# ps için | grep sshd
kök400 0.0 0,2 69944 5624? Ss17:47 0: 00/usr/sbin/sshd-NS
kök1076 0,2 0,3 95204 6816? Ss18:29 0:00 sshd: kök@puan/0
kök1093 0.0 0.0 12784 932puan/0S+18:29 0: 00kavramaksshd

2. IP adreslerinizi Grepping

Çoğu işletim sisteminde, ifconfig veya ip addr komutunu kullanarak tüm ağ arayüzlerinizi ve bu arayüze atanan IP'yi listeleyebilirsiniz. Bu komutların her ikisi de birçok ek bilgi verecektir. Ancak yalnızca IP adresini yazdırmak istiyorsanız (örneğin kabuk komut dosyaları için), aşağıdaki komutu kullanabilirsiniz:





$ip adresi | kavramakinet| awk '{ 2 $ yazdır; }'
$ip adresi | kavramak -içindeinet| awk '{ 2 $ yazdır; }' #inet6 değil sadece inet olan satırlar için (IPv6)

ip addr komutu tüm detayları (IP adresleri dahil) alır, daha sonra sadece içinde inet olan satırları çıkaran ikinci grep inet komutuna iletilir. Bu daha sonra awk print her satırda ikinci kelimeyi yazdıran ifadeye aktarılır (basitçe söylemek gerekirse).

P.S: Awk'yi iyi biliyorsanız, bunu grep olmadan da yapabilirsiniz.



3. Başarısız SSH girişimlerine bakmak

Genel IP'ye sahip, İnternet'e bakan bir sunucunuz varsa, sürekli olarak SSH denemeleriyle bombardımana tutulacaktır ve kullanıcıların parola tabanlı SSH erişimine izin verirseniz (tavsiye etmeyeceğim bir politika), bu tür tüm başarısız girişimleri aşağıdakileri kullanarak görebilirsiniz. aşağıdaki grep komutu:

# cat /var/log/auth.log | grep Başarısız
Örnek çıkış
Aralık5 16:yirmi:03 debian sshd[509]:Başarısız parolaiçin192.168.0.100 bağlantı noktasından kök52374ssh2
Aralık5 16:yirmi:07 debian sshd[509]:Başarısız parolaiçin192.168.0.100 bağlantı noktasından kök52374ssh2
Aralık5 16:yirmi:on birdebian sshd[509]:Başarısız parolaiçin192.168.0.100 bağlantı noktasından kök52374ssh2

4. Grep'i Uniq'e Aktarma

Bazen grep çok fazla bilgi verir. Yukarıdaki örnekte, tek bir IP sisteminize girmeye çalışıyor olabilir. Çoğu durumda, benzersiz bir şekilde tanımlamanız ve kara listeye almanız gereken bu tür rahatsız edici IP'lerden yalnızca birkaçı vardır.

#kedi /nerede/kayıt/auth.log| kavramak 'Hata' | tek -F 3

uniq komutunun yalnızca benzersiz satırları yazdırması gerekiyor. uniq -f 3 ilk üç alanı atlar (asla tekrarlanmayan zaman damgalarını gözden kaçırmak için) ve ardından benzersiz satırlar aramaya başlar.

5. Hata Mesajları için Grepping

Grep'i erişim ve hata günlükleri için kullanmak yalnızca SSH ile sınırlı değildir. Web sunucuları (Nginx gibi) hatayı kaydeder ve günlüklere oldukça titiz bir şekilde erişir. grep 404 yeni bir değer döndürdüğünde size uyarı gönderen izleme komut dosyaları kurarsanız. Bu oldukça faydalı olabilir.

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

192.168.0.100 - -[06/Aralık/2018: 02:yirmi:29+0530] '/favicon.ico HTTP/1.1'i GET' 404 200
'http://192.168.0.102/' 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, Gecko gibi) Chrome/70.0.3538.110 Safari/537.36'


192.168.0.101 - -[06/Aralık/2018: 02:Dört beş:16+0530] '/favicon.ico HTTP/1.1'i GET' 404 143
'http://192.168.0.102/' 'Mozilla/5.0 (iPad; Mac OS X gibi CPU OS 12_1)
AppleWebKit/605.1.15 (KHTML, Gecko gibi) Sürüm/12.0 Mobil/15E148 Safari/604.1'

Normal ifade 404 olmayabilir, ancak yalnızca Mobil istemciler veya yalnızca bir web sayfasını görüntüleyen Apple cihazları için başka bir normal ifade filtrelemesi olabilir. Bu, uygulamanızın nasıl performans gösterdiğine dair daha derin bir fikir edinmenizi sağlar.

6. Paket Listeleme

Debian tabanlı sistemler için dpkg -l, sisteminizde kurulu olan tüm paketleri listeler. Belirli bir uygulamaya ait paketleri aramak için bunu bir grep komutuna aktarabilirsiniz. Örneğin:

#dpkg -NS | kavramak 'Geldim'

7. grep -v dosya İsimleri

Tüm satırları listelemek için yapma belirli bir desen içeriyorsa, -v bayrağını kullanın. Temelde normal bir grep komutunun tam tersidir.

8. grep -l

Sağlanan desenin en az bir örneğini içeren tüm dosyaları listeler. Bu, birden fazla dosya içeren bir dizinde bir kalıp ararken kullanışlıdır. Desenli belirli satırı değil, yalnızca dosya adını yazdırır.

9. Tek kelime seçeneği -w

$kavramak -içinde <DESEN>dosya adları

-w bayrağı, grep'e verilen kalıbı yalnızca bir satırın alt dizesi olarak değil, tam bir kelime olarak aramasını söyler. Örneğin, daha önce IP adresi ve kalıp için greptik inet satırları her ikisiyle de yazdırdı inet ve inet6 hem IPv4 hem de IPv6 adreslerini listeler. Ama eğer -w işaretini kullanırsak, sadece inet önünde ve arkasında boşluk bulunan bir sözcük olarak geçerli bir eşleşmedir.

10. Genişletilmiş Normal İfade

Grep'e özgü düzenli ifadelerin genellikle biraz sınırlayıcı olduğunu göreceksiniz. Çoğu komut dosyasında ve talimatta -E bayrağının kullanımını bulacaksınız ve bu, Genişletilmiş Mod denilen şeye kalıp girmenize izin verecektir.

İşte Superman ve Spiderman kelimelerini aramak için grep ve grep -E komutları.

$kavramak '(Süper|Örümcek)adam'Metin
$kavramak -VE '(Süper|Örümcek)adam'Metin

Gördüğünüz gibi genişletilmiş versiyonu okumak çok daha kolay.

11. Konteynerleriniz için Grep

Ana makinenizde çalışan büyük bir kapsayıcı kümeniz varsa, bunları görüntü adına, durumuna, maruz kaldıkları bağlantı noktalarına ve diğer birçok özelliğe göre grep yapabilirsiniz. Örneğin,

$liman işçisips | kavramak [resimAdı]

12. Kapsülleriniz için Grep

Konteyner konusuna gelmişken. Kubernet'ler genellikle belirli bir dağıtım altında birden çok bölme başlatma eğilimindedir. Her bölmenin benzersiz bir adı olsa da, belirli bir ad alanında genellikle dağıtım adıyla başlarlar. Bunu grep edebilir ve belirli bir dağıtımla ilişkili tüm bölmeleri listeleyebiliriz.

$kubectl bakla almak| kavramak <dağıtımAdı>

13. Büyük veri için tutuş

Çoğu zaman Büyük Veri analizi, belirli bir veri kümesindeki kalıpların basit bir şekilde aranmasını, sıralanmasını ve sayılmasını içerir. grep, uniq, wc gibi düşük seviyeli UNIX yardımcı programları bu konuda özellikle iyidir. Bu blog gönderisi, Hadoop neredeyse yarım saat sürerken grep ve diğer Unix yardımcı programları kullanılarak yalnızca birkaç saniyede tamamlanan bir görevin güzel bir örneğini gösterir.

Örneğin, bu veri kümesinin boyutu 1,7 GB'ın üzerindedir. Yapılan hamleler, kimin kazandığı vb. dahil olmak üzere çok sayıda satranç maçı hakkında bilgi içerir. Sadece sonuçlarla ilgilendiğimiz için aşağıdaki komutu çalıştırıyoruz:

$kavramak 'Sonuç'milyon taban2.22.pgn| çeşit | tek -C
221 [Sonuç'*']
653728 [Sonuç'0-1']
852305 [Sonuç'1-0']
690934 [Sonuç'1 / 2-1 / 2']

Bu, 4 yıllık 2 çekirdekli/4 iş parçacıklı bir işlemcide yaklaşık 15 saniye sürdü. Yani bir dahaki sefere büyük bir veri problemini çözüyorsun. Bunun yerine grep kullanıp kullanamayacağınızı düşünün.

14. grep –renk=otomatik

Bu seçenek grep'in bulunduğu satırın içindeki deseni vurgulamasına izin verir.

15. grep -i

Grep desen eşleştirme, doğası gereği büyük/küçük harfe duyarlıdır. Ancak bunu umursamıyorsanız, -i bayrağını kullanmak grep büyük/küçük harfe duyarsız hale getirecektir.

16. grep -n

-n bayrağı satır numaralarını gösterir, böylece daha sonra aynı satırı bulma konusunda endişelenmenize gerek kalmaz.

17. git grep

Sürüm kontrol sistemi olan Git'in kendisi, normal grep'iniz gibi çalışan yerleşik bir grep komutuna sahiptir. Ancak, sıkıcı borular yerine yerel git CLI'yi kullanarak herhangi bir taahhütlü ağaçta kalıp aramak için kullanılabilir. Örneğin, reponuzun ana dalındaysanız, aşağıdakileri kullanarak repo boyunca grep yapabilirsiniz:

(usta)$git grep <Desen>

18. grep -o

-o bayrağı, bir normal ifadede hata ayıklamaya çalıştığınızda gerçekten yararlıdır. Satırın tamamı yerine yalnızca satırın eşleşen kısmını yazdıracaktır. Bu nedenle, sağlanan bir model için çok fazla istenmeyen satır alıyorsanız ve bunun neden olduğunu anlayamıyorsunuz. Rahatsız edici alt dizeyi yazdırmak için -o bayrağını ve regex'inizle ilgili nedeni oradan geriye doğru kullanabilirsiniz.

19. grep -x

-x bayrağı, yalnızca ve yalnızca tüm satırın sağlanan normal ifadenizle eşleşmesi durumunda bir satır yazdırır. Bu, sağlanan normal ifadeyle yalnızca ve yalnızca bir kelimenin tamamı eşleşiyorsa, bir satır yazdıran -w bayrağına biraz benzer.

20. grep -T

Bir kabuk komut dosyalarından günlükler ve çıktılarla uğraşırken, farklı çıktı sütunları arasında ayrım yapmak için zor sekmelerle karşılaşmanız daha olasıdır. -T bayrağı, bu sekmeleri düzgün bir şekilde hizalar, böylece sütunlar düzgün bir şekilde düzenlenir ve çıktıyı insan tarafından okunabilir hale getirir.

21. grep -q

Bu, çıktıyı bastırır ve grep komutunu sessizce çalıştırır. Metni değiştirirken veya bir arka plan programı komut dosyasında grep çalıştırırken çok kullanışlıdır.

22. grep -P

Normal ifade sözdizimini perl yapmaya alışkın kişiler, tam olarak bunu kullanmak için -P bayrağını kullanabilir. Grep'in varsayılan olarak kullandığı temel normal ifadeyi öğrenmeniz gerekmez.

23. grep -D [EYLEM]

Unix'te hemen hemen her şey bir dosya olarak ele alınabilir. Sonuç olarak, herhangi bir cihaz, bir soket veya bir FIFO veri akışı grep'e beslenebilir. -D bayrağını ve ardından bir EYLEM kullanabilirsiniz (varsayılan eylem READ'dir). Diğer birkaç seçenek, belirli cihazları sessizce atlamak için SKIP ve dizinleri ve sembolik bağlantıları yinelemeli olarak geçmek için RECURSE'dir.

24. Tekrar

Bilinen daha basit bir kalıbın tekrarı olan belirli bir kalıp arıyorsanız, tekrar sayısını belirtmek için küme parantezleri kullanın.

$kavramak -VE [0-9]{10}

Bu, 10 veya daha fazla basamak uzunluğunda dizeler içeren satırları yazdırır.

25. Tekrarlama kısayolları

Bazı özel karakterler, belirli bir desen tekrarı türü için ayrılmıştır. Bunları, ihtiyacınıza uygunsa kaşlı ayraçlar yerine kullanabilirsiniz.

? : Soru işaretinden önceki kalıp, sıfır veya bir kez eşleşmelidir.

* : Yıldızdan önceki desen sıfır veya daha fazla kez eşleşmelidir.

+ : Artıdan önceki model bir veya daha fazla kez eşleşmelidir.

25. Bayt Ofsetleri

Eşleşen ifadenin bulunduğu satırların bayt ofsetini görmek istiyorsanız, ofsetleri yazdırmak için -b bayrağını da kullanabilirsiniz. Bir satırın yalnızca eşleşen bölümünün ofsetini yazdırmak için -b bayrağını -o bayrağıyla birlikte kullanabilirsiniz.

$kavramak -B -veya <DESEN> [dosya adı]

Ofset, basitçe, eşleşen dizenin dosyanın başlangıcından kaç bayt sonra başlayacağı anlamına gelir.

26. egrep, fgrep ve rgerp

Daha önce tartıştığımız genişletilmiş düzenli ifade sözdizimini kullanmak için egrep'in çağrıldığını sık sık göreceksiniz. Ancak, bu kullanımdan kaldırılmış bir sözdizimidir ve bunu kullanmaktan kaçınmanız önerilir. Bunun yerine grep -E kullanın. Benzer şekilde, fgrep yerine grep -F ve rgrep yerine grep -r kullanın.

27. grep -z

Bazen grep girişi, yeni satır karakteriyle biten satırlar değildir. Örneğin, bir dosya adları listesi işliyorsanız, bunlar farklı kaynaklardan gelebilir. -z bayrağı, grep'e NULL karakterini satır sonu olarak ele almasını söyler. Bu, gelen akışı herhangi bir normal metin dosyası olarak değerlendirmenize olanak tanır.

28. grep -a [dosyaAdı]

-a bayrağı, grep'e sağlanan dosyaya normal metinmiş gibi davranmasını söyler. Dosya bir ikili dosya olabilir, ancak grep içerideki içeriğe metinmiş gibi davranacaktır.

29. grep -U [dosyaAdı]

-U bayrağı, grep'e sağlanan dosyalara metin değil ikili dosyalarmış gibi davranmasını söyler. Varsayılan olarak grep, ilk birkaç bayta bakarak dosya türünü tahmin eder. Bu bayrağın kullanılması, tahmin edilen işi geçersiz kılar.

Grep -m NUM

Büyük dosyalarla, bir ifadeyi grmek sonsuza kadar sürebilir. Ancak, yalnızca ilk NUM eşleşme sayısını kontrol etmek istiyorsanız, bunu gerçekleştirmek için -m bayrağını kullanabilirsiniz. Daha hızlıdır ve çıktı genellikle yönetilebilirdir.

Çözüm

Bir sistem yöneticisinin günlük işlerinin çoğu, büyük metin alanlarını gözden geçirmeyi içerir. Bunlar güvenlik günlükleri, web veya posta sunucunuzdaki günlükler, kullanıcı etkinliği veya hatta büyük kılavuz sayfa metinleri olabilir. Grep, bu kullanım durumları ile uğraşırken size ekstra esneklik sağlar.

Umarım, yukarıdaki birkaç örnek ve kullanım örnekleri, bir yazılımın bu yaşayan fosilini daha iyi anlamanıza yardımcı olmuştur.