Linux access_log dosyasındaki benzersiz IP adreslerini bulmak
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