squid sarg raporlarında ip yerine netbios ismi kullanmak için

Bazı durumlarda squid veya sarg IP’den bilgisayar ismini çözümleyemeyebilir ve sarg raporları IP adresleri ile oluşturulacağından karışıklık oluşur.
Sorunu gidermek için, nbtscan kullanarak WORKGROUP içinde makine adını çözümleyebiliriz.

#!/bin/bash
# 10-08-2013 Cem DOGAN
#
for i in `cat /var/log/squid/access.log|awk '{print $3}'|grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' |sort|uniq`
do
        echo "+++"$i"+++"
        if grep -q $i /root/sarg.ip
        then
        zatenvar=`grep $i /root/sarg.ip`
        echo $zatenvar" dosyada zaten bulunuyor"
        else
        name=`/usr/sbin/nbtscan $i |grep $i |grep -v NBT|awk '{print $2}'`
                if [ $name ]
                        then
                        echo $i":"$name>> /root/sarg.ip.tmp
                        #sort /root/sarg.ip.tmp|uniq > /root/sarg.ip
                        echo $i,$name "eklendi"
                        else
                        dhcpden=`cat /var/lib/dhcpd/dhcpd.leases |grep -A 10 $i| grep hostname| awk -F " '{print $2}'|sort|uniq`
                                if [ $dhcpden ]
                                then
                                #       echo $i":"$dhcpden>> /root/sarg.ip.tmp
                                        echo $i":"$dhcpden|tr "[:lower:]" "[:upper:]">> /root/sarg.ip.tmp

                                        echo $i":"$dhcpden
                                fi
                fi
        fi
done
sort /root/sarg.ip.tmp|uniq > /root/sarg.ip

Gün içinde topladığımız ip ve bilgisayar isimlerini sed kullanarak başka bir dosyada düzenlenmiş şekilde hazırlıyoruz.

#!/bin/bash
# 10-08-2013 Cem DOGAN
#
INPUT=/root/sarg.ip
OLDIFS=$IFS
IFS=:
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read ip name
do
        params+="s/$ip/$name/g;"
done < $INPUT
IFS=$OLDIFS

params=`echo $params| sed 's/;$//'`
sed  -e "$params" /var/log/squid/access.log > /var/log/squid/access.log.sarg

Artık sarg ayarlarımızı yeni oluşturduğumuz dosyadan okuyacak şekilde yapabiliriz.

dhcpd ile lease time’ı uzun tutmak ve günlük olarak oluşturulan ip tablosunu temizlemek de gerekebilir. Gerisi size kalmış.