Så när jag fått igång scriptet som tog ut användarna från våra trådlösa Cisco-kontroller tänkte jag att man också kunde använda datat för att visa hur många användare som är uppkopplade trådlöst.
Jag löste det helt sonika med att modifiera det gamla scriptet och lade till två rader:
more /tmp/wlc.txt | wc -l > /tmp/users.txt
convert -background white -fill blue -pointsize 24 label:@/tmp/users.txt /var/www/wlanusers/users.gif
Först räknar jag antalet rader och skriver ut siffran i filen users.txt sedan konverterar jag siffran till en GIF-bild som jag lägger på webbservern (detta är maskinen som kör Smokeping och MRTG) och pekar helt sonika ut den i min html-fil när jag ska använda den. Den uppdateras med femminutersintervall.
Eftersom det också finns lite andra tweaks i scriptet publicerar jag hela igen:
#!/bin/bash
##########################
snmp_community="public"
snmp_host="192.168.1.1"
# Tar bort filen om den redan finns
if [ -e /tmp/wlc.txt ]
then
rm -f /tmp/wlc.txt
fi
####################################################################
#Set input system to break on new-line when adding data to an array#
####################################################################
IFS=$'\n'
####################################################################
#Perform SNMP walks to get data of interest and load them into array variables to use later#
####################################################################
while [ "1" -ne "2" ]
do
Unique_OID=($(snmpwalk -v 2c -O x -c $snmp_community $snmp_host 1.3.6.1.4.1.14179.2.1.4.1.1))
Client_IP=($(snmpwalk -v 2c -c $snmp_community $snmp_host 1.3.6.1.4.1.14179.2.1.4.1.2))
Client_Username=($(snmpwalk -v 2c -c $snmp_community $snmp_host 1.3.6.1.4.1.14179.2.1.4.1.3))
#####################################################################
#Ensure all SNMP walk requests contain the same amount of data and break loop when they do #
#####################################################################
count1=${#Unique_OID[@]}
count2=${#Client_IP[@]}
count3=${#Client_Username[@]}
if [ "$count1" -eq "$count2" ]; then
if [ "$count2" -eq "$count3" ]; then
break
fi
fi
done
####################################################################
#Create a loop to match and extract data between the various arrays#
####################################################################
wait
index=0
while [ "$index" -lt "$count1" ]
do
id=$(echo ${Unique_OID[$index]} | cut -d "=" -f1 | awk -F "." '{print $8 "."$9 "." $10 "." $11 "." $12 "." $13 }')
cIP=$(echo ${Client_IP[$index]} | grep $id | awk -F " " '{print $4}')
cUser=$(echo ${Client_Username[$index]} | grep $id | awk -F " " '{print $4}' | sed s/\"//g)
if [[ $cUser = TEST* ]] || [[ $cUser != "" ]] && [[ $cUser != host* ]] && [[ $cIP != "0.0.0.0" ]]; then
if [[ $cUser = TEST* ]]; then
echo "SYSTEM=CISCO IP="$cIP "USER="$cUser >> /tmp/wlc.txt
else
echo "SYSTEM=CISCO IP="$cIP "USER=LIDINGO\\\\"$cUser >> /tmp/wlc.txt
fi
fi
((index++))
done
# Kontrollera om filen finns och skicka den vidare
if [ -e /tmp/wlc.txt ]
then
more /tmp/wlc.txt | wc -l > /tmp/users.txt
convert -background white -fill blue -pointsize 24 label:@/tmp/users.txt /var/www/wlanusers/users.gif
logger -d -f /tmp/wlc.txt -n 192.168.1.2 -P 514
logger -d -f /tmp/wlc.txt -n 192.168.1.3 -P 514
fi
-------------------------
Den sista logger-raden skickar in datat i Splunk. Där kan jag korrelera och undersöka t.ex. om en användare är inloggad på flera enheter samtidigt - klart suspekt beteende om enheterna är på geografiskt olika platser.
Inga kommentarer:
Skicka en kommentar