a482e3f7ac64a650236679d235bec7f249dfd6ff
[dell-switch] / snmp-mac-port
1 #!/bin/bash -e
2
3 . ./snmp.conf # get COMMUNITY
4
5 log=/dev/shm/snmp-mac-port
6 test -d $log || mkdir $log
7
8 snmp_walk() {
9         ip=$1
10         fping $ip 2>>/dev/shm/dead
11
12         # Q-BRIDGE-MIB dot1qFdbTable
13         snmpbulkwalk -O0sUX -v2c -Cc -c $COMMUNITY $ip 1.3.6.1.2.1.17.7.1.2.2.1.2 | sed -e 's/.*7\.1\.2\.2\.[0-9]\.[0-9]\.//' -e 's/ = [^:]*: / /' -e 's/\./ /g' | awk -v name=$ip '{ printf "%s %d %02x:%02x:%02x:%02x:%02x:%02x %d\n", name, $1, $2,$3,$4,$5,$6,$7, $8 }' | tee $log/$ip
14         num=`cat $log/$ip | wc -l`
15         if [ $num -le 1 ] ; then
16                 # fake vlan using only BRIDGE-MIB::dot1dTpFdbPort
17                 snmpwalk -O0sUX -v2c -Cc -c $COMMUNITY $ip BRIDGE-MIB::dot1dTpFdbPort | sed -e "s/^[^:]*:/$ip -/" -e 's/\].*: / /' | tee -a $log/$ip
18         fi
19 }
20
21 if [ ! -z "$1" ] ; then
22         while [ ! -z "$1" ] ; do
23                 snmp_walk $1
24                 shift
25         done
26         exit 0
27 fi
28
29 #( ls -d $log.last/* | sed 's/^.*\///' ; ./ips ) | sort -u | while read ip
30 ./sw-names | while read ip
31 do
32         echo "## $ip"
33         snmp_walk $ip
34 done