Удобый просмотр MAC адресов на портах свитчей huawei, linksys, dlink, extreme при помощи expect

от автора

Каждый день взаимодействуя с тех.поддержкой приходится лазить на свитчи и глядеть маки.В принципе ничего сложного, но хотелось как то упросить себе работу.

Освоил expect и сразу в бой. Написал, опробовал, получилось. Теперь делюсь с Вами, может кому и пригодится.

Сначала создадим пустой файлик: nano ./get_mac.sh

Теперь нужно вставить внутрь туда код который ниже:

#!/usr/bin/expect -f if {[llength $argv] != 2} { puts "Не верно указаны переменные: ./get_mac 10.5.X.XXX 'port'" exit 1 } set ip [lindex $argv 0] set eth [lindex $argv 1] set login "ЛОГИН НА СВИТЧЕ" set pass "ПАРОЛЬ" package require Expect spawn telnet $ip  expect {         "*assw*" {         send "$pass\n"         expect "*>"         send "su\n"         expect "*ass*"         send "$pass\n"         expect "*>"         send "disp mac-addr dy | inc $eth\n"         expect "*>"         send "q\n"}          "*User Name*" {         send "$login\n"         expect "*asswor*"         send "$pass\n"         expect "*#"         send "show brid address-table ethernet e$eth\n"         expect "*#"         send "exit\n"}          "*login*" {         send "admin\n"         expect "*password*"         send "$pass\n"         expect "*#*"         send "show fdb port $eth\n"         expect "*#*"         send "exit\n"}           "*Name*" {         send "$login\n"         expect "*Word*"         send "$pass\n"         expect "*#"         send "show fdb port $eth\n"         expect "*#"         send "logo\n"} } interact 

Теперь рассмотрим как это работает.

В командной строке нужно написать вызов скрипта ,ip Вашего свитча, и порт на котором хотим поглядеть МАС: ./get_mac.sh 10.5.0.10 1

После чего пройдет выполнение скрипта. Експект проанализирует входное значение. В зависимости от приветствия будет выполняться нужный сегмент кода.

У свитчей Huawei есть особенность. Можно считать таблицу fdb динамически и сортировать по содержащемуся значению. По этому для этих свитчей рекомендуется более точно указывать параметр порта. К примеру Eth0/0/Номер порта или 0/0/Номер порта. Иначе скрипт вывалит все маки в которых содержится переменная и скрипт может вылететь по причине ожидания.

Данный скрипт проверен на железках huawei s2326TP-EI, dlink des-3028, linksys sr224g4 и extreme summit 200-24. По идее будет работать и на dlink’ах других серий таких как 32,35 и cisco.

ссылка на оригинал статьи http://habrahabr.ru/post/271867/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *