Date created: Friday, February 5, 2016 12:06:49 PM. Last modified: Thursday, April 13, 2023 11:47:37 AM
LNS User Search
A simple BASH scipt that searches all Cisco IOS LNS routers for a string using SNMPWalk to find where a single or group of subscribers are currently connected. There is also a php wrapper page so the script can be executed via a browser:
#!/bin/bash # This bash script uses snmpwalk to scan LNS routers for a particualr string, # to locate where they are logged on. It checks all LNS routers, it doesn't # stop on first match # List of LNS routers, add/remove as required # LNS_ADDR[0]="10.0.0.1" LNS_NAME[0]="lns1" LNS_ADDR[1]="10.0.0.2" LNS_NAME[1]="lns2" LNS_ADDR[2]="10.0.0.3" LNS_NAME[2]="lns3" function lns_crawl { #INDEX=$1 if [ -e ${LNS_NAME[$INDEX]}.txt ]; then rm -f ${LNS_NAME[$INDEX]}.txt; fi snmpwalk -v 3 -n "" -u snmpuser -a MD5 -A "SuperSafe" -x AES -X "SecretKey" -l authPriv ${LNS_ADDR[$INDEX]} 1.3.6.1.4.1.9.10.24.1.3.2.1.2 \ | awk '{print $NF}' | grep -E $USER_STRING | sed -s "s/\"//g" >> ${LNS_NAME[$INDEX]}.txt if [ `wc -l ${LNS_NAME[$INDEX]}.txt | awk '{print $1}'` -ge 1 ] then while IFS='' read -r USERNAME; do echo "${LNS_NAME[$INDEX]}: $USERNAME" >> $OUTPUT done < ${LNS_NAME[$INDEX]}.txt fi rm -f ${LNS_NAME[$INDEX]}.txt } # Default settings # if [ -z "$1" ] then echo "No search string given" exit 1 else USER_STRING="$1" fi cd `dirname $0` if [ $? -ne 0 ] then echo "Couldn't change to directory `dirname $0`" exit 1 fi OUTPUT="./lns-checker-`date +'%Y-%m-%d--%H-%M-%S'`" if [ -e "$OUTPUT" ] then rm -f $OUTPUT fi touch $OUTPUT if [ $? -ne 0 ] then echo "Couldn't make temp file `pwd`/$OUTPUT" exit 1 fi # Start the SNMP walk # echo "Searching for $USER_STRING" INDEX=0 while [ $INDEX -lt ${#LNS_ADDR[@]} ] do lns_crawl & let INDEX=INDEX+1 done wait echo "Results: `wc -l $OUTPUT | awk '{print $1}'`" cat $OUTPUT rm -f $OUTPUT
Previous page: Light (Optics) Calculators
Next page: Max MTU Size