Linux

Linux access_log dosyasındaki benzersiz IP adreslerini bulmak

sunucu linux kernel
Share

Soru Sitemize erişim sağlayan IP adreslerini access_log dosyası günlüğümden nasıl ayırım. Apache log dosyamdan sadece benzersiz IP adreslerini almam gerekiyor. Makalemiz için örnek apache log aşağıdaki gibidir.:

XXX.36.84.XXX - - [26/Mar/2018:00:28:23 -0700] "GET / HTTP/1.1" 403 4609 
"-" "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like 
Gecko) Chrome/10.0.648.204 Safari/534.16"

Cevap
Sağladığınız apache log giriş formatı üzerine, bu tür apache log girişlerinden IP adreslerini çıkarmanın en kolay yolu awk, sort ve uniq komutlarının bir kombinasyonunu kullanmaktır. Öncelikle IP adreslerinin uzun bir listesini almamız gerekiyor. Bunu awk komutuyla yapabiliriz:

awk '{print $ 1}' apache_log

Sonraki adım, IP adreslerini sort komutuyla sıralamaktır:

$ awk '{ print $1 } ' apache_log | sort

Ve son olarak yukarıdaki komutun çıktısını tek noktaya aktararak sadece benzersiz bir IP adresi alırız:

$ awk '{ print $1 } ' apache_log | sort | uniq