DNS ve DHCP sunucusu aynı yerde ise; DHCP loglarından IP adreslerini süzüyor. Günlük rotate edilmiş ve sıkıştırılmış DNS loglarından da istenilen uzaklığa (30 gün mesela) göre logları çekip temizliyor.
IP listesi dosyasındaki tüm kayıtları DNS’ten alınıp temizlenen loglariçinde arıyor. Çok çok uzun sürmüyor. Bizim canlı sistemde bir aylık logların işlenmesi 12 dakika sürüyor. Betik aşağıda, düzenlenecek yerleri var. Üşenmezsem düzenlerim.
Not: Betikteki & ; yazan yerler “&” karakteri olacak. > ; yazan yerler de “>” işareti olacak. Bu kod renklendirici zımbırtısı bozuyor karakterleri, düzeltemedim ayarını.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/bash # 20.06.2013 # Betigi yazan: Murat Ozalp # Sürüm: 1.0 # Lisans: Hersey serbest # ACIKLAMA # DNS loglarina bakarak -DHCP'de kayitli olmasina ragmen- kullanilmayan IP adreslerini belirlemeye calisiyor. GUN_SAYISI=32 # Posta alicilarini aralarinda bosluk birakarak yazabilirsin. POSTA_ALICI="hesap1@alan1.edu.tr hesap2@alan1.edu.tr hesap12@alan2.edu.tr" POSTA_KONU="Aga baglanmayan IP adresleri" # Bir haftalik sorgu loglarini tek dosya halinde toparla mkdir /var/log/bind/gecici cd /var/log/bind find ./ -mtime "-$GUN_SAYISI" -name bind-sorgu.\* -exec cp {} gecici/ \; &>/dev/null cd gecici gunzip -q * cat * > toplu.log echo "" echo "LOG baslangic ve bitis tarihleri:" >> kullanilmayanlar.txt find /var/log/bind/ -mtime "$GUN_SAYISI" -name bind-sorgu.\* -exec zcat {} \; | tail -n1 | awk '{print $1}' >> kullanilmayanlar.txt find /var/log/bind/ -mtime "1" -name bind-sorgu.\* -exec zcat {} \; | tail -n1 | awk '{print $1}' >> kullanilmayanlar.txt echo "---" >> kullanilmayanlar.txt cat toplu.log | cut -d# -f1 | awk '{print $6}' | sort | uniq > toplu-uniq-ip.log # IP adreslerini DHCP dosyasından çek grep fixed-address /etc/dhcp/dhcpd.conf | egrep -o "10\.9\..*;|10\.10\..*;" | sed 's/.$//' | sort | uniq > /var/log/bind/gecici/IPadresleri.txt echo "DHCPde kayitli olan `cat /var/log/bind/gecici/IPadresleri.txt | wc -l` tane IP adresi sorgulandi ve asagidaki adreslerin uzun suredir kullanilmadigi goruldu" >> kullanilmayanlar.txt ### dosyadaki her bir IP adresi icin, sorgu loglarini incele for ip in $(cat IPadresleri.txt) do grep -l "$ip" /var/log/bind/gecici/toplu-uniq-ip.log > /dev/null # grep komutunun ciktisi bos mu, dolu mu? doluysa "SORUN YOK". Bossa, IP kullanilmiyor. if [ $? -eq 0 ]; then CEVAP="SORUN YOK" else echo "$ip" >> kullanilmayanlar.txt fi done echo -e "---\nToplam: `grep '10.' kullanilmayanlar.txt | wc -l` IP adresi" >> kullanilmayanlar.txt CEVAP=`cat kullanilmayanlar.txt` POSTA_GOVDE="$(printf '\n%s\n' "$CEVAP")" ## E-posta gondermesi yerine ciktiyi konsola vermesi icin alttaki satirlar degisitirilebilir. echo "$POSTA_GOVDE" | mail -s "$POSTA_KONU" $POSTA_ALICI #echo "$POSTA_GOVDE" # Gecici dosyalari sil rm -rf /var/log/bind/gecici/ |
Örnek ekran görüntüsü de şöyle:
1 2 3 4 5 6 7 8 9 10 |
LOG tarihleri: 19-May-2013 19-Jun-2013 --- DHCPde kayitli olan 1517 tane IP adresi sorgulandi ve asagidaki adreslerin uzun suredir kullanilmadigi goruldu 10.10.128.100 10.10.128.102 10.10.128.104 10.10.128.105 ... |
mesut saygı
03 Temmuz 2013, 10:53 (UTC 2) Bu yoruma bağlantı
Faydalı bir Bilgi Teşekkür Ederim Hocam
para kazan
21 Temmuz 2013, 18:51 (UTC 2) Bu yoruma bağlantı
faydalı ne demek çok kaliteli bir çalışma tebrikler
Web Sitesi Kurma
21 Temmuz 2013, 18:52 (UTC 2) Bu yoruma bağlantı
BAŞARILI ÇALIŞMANIZDAN ÖTÜRÜ TEBRİK EDERİM