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ış.