А я свой усовершенствовал. Теперь ему можно скормить список IP-адресов, и он все маки выплюнет в один итоговый файл.
Скрипт:
Код:
#! /bin/bash
# Имя файла с IP-адресами - текстовый файл - первая строка игнорируется
# далее - один IP-адрес - одна строка. Последняя строка тоже пустая.
IPADDR=./ip.txt
# Обнуляю файлы списка файлов
>Out.txt
# Построчно читаю файл с IP-адресами - ip.txt в текущем каталоге
for x in $IPADDR$(awk 'BEGIN{FS=":"}{print $1}' < "$IPADDR" )
do
if [ $x == $IPADDR ]
# Игнорируем первую строку
then continue;
fi
snmpwalk -v2c -c public $x 1.3.6.1.2.1.17.7.1.2.2.1.2 > 000
cut 000 -d "." -f 9 | mawk '{{s1=$1}{printf ("(%u)\n", s1)}}' > vlan
cut 000 -d " " -f 4 | mawk -v xip=$x '{{s1=$1}{printf ("%15s Port %2u\n", xip, s1)}}'> ports
cut 000 -d "." -f 10-15 | cut -d " " -f 1 > mac0
cut mac0 -d "." -f 1 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m1
cut mac0 -d "." -f 2 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m2
cut mac0 -d "." -f 3 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m3
cut mac0 -d "." -f 4 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m4
cut mac0 -d "." -f 5 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m5
cut mac0 -d "." -f 6 | mawk '{{s1=$1}{printf ("%02x\n", s1)}}' > m6
paste -d "\0" m1 m2 > m12
paste -d "\0" m3 m4 > m34
paste -d "\0" m5 m6 > m56
paste -d "." m12 m34 m56 > mac
paste ports mac vlan | sort --sort=numeric -n >> Out.txt
rm m[1-6]
rm m[1-6][1-6]
rm ports
rm vlan
rm mac
rm mac0
rm 000
done
exit 0
Файл с IP-адресами (первая строка должна быть пустой)(это, конечно, можно решить, но лениво.....):
Код:
100.56.13.16
100.56.33.13
100.56.234.8
В итоге получим текстовый файл:
Код:
100.56.13.16 Port 0 0017.9a05.3d1c (5)
100.56.13.16 Port 10 0013.204d.4826 (82)
100.56.13.16 Port 12 0030.ab12.b8bc (5)
100.56.13.16 Port 15 0024.8cb1.1c46 (82)
100.56.13.16 Port 16 00a0.d2ac.41e0 (82)
100.56.13.16 Port 19 0002.b399.7004 (89)
100.56.13.16 Port 19 0017.9a08.23d2 (5)
100.56.13.16 Port 19 0017.9a08.663c (89)
100.56.13.16 Port 19 0017.9a08.6823 (5)
100.56.13.16 Port 19 0019.5b69.7e64 (89)
100.56.13.16 Port 19 001c.c020.08b5 (82)
...
...
100.56.33.13 Port 0 0022.b067.47c4 (5)
...
...
Чем удобно, так это тем, что
а) MAC-адрес в цискином формате (не надо лишних манипуляций производить, просто copy-past)
б) можно найти, к какого клиентского порта валится данный мак-адрес (cat + grep)