Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров29K
Всего голосов 20: ↑13 и ↓7+6
Комментарии14

Комментарии 14

Очень мило. Но почему-то возникает только три вопроса:

1. SNMP придумали трусы?
2. Почему на всех свитчах используются одинаковые данные для авторизации?
3. Почему «взаимодействуя с тех.поддержкой приходится лазить на свитчи и глядеть маки»?
Ну подождите, не так быстро. Человек только expect освоил. Остальное на подходе.
а как глянуть через snmp? я snmp браузером полазил по своим hp — не нашёл. но признаю, что поверхностно искал.
ууу жесть какая.

Я длинки одним макросом опрашиваю, например

snmpwalk -v2c -c public MAC_АДРЕС_СВИТЧА 1.3.6.1.2.1.17.7.1.2.2.1.2 | sed "s/\./ /g" | sed "s/SNMPv2-SMI::mib-2 17 7 1 2 2 1 2 //g" | sed "s/ = INTEGER://g"  | awk '{printf "%02X%02X%02X%02X%02X%02X %s Ethernet%s \n",$2,$3,$4,$5,$6,$7,$1,$8}' 
Я дал как пример, что бы было от чего оттолкнуться. Да и Zabbix умеет уже намного больше. Вообще конечно, правильно сварганить web морду и отдать support, что бы они тебе на могзи меньше капали. Админы должны смотреть котиков и пить чай ;) кофе/пиво.
Видимо вы хотели сказать «snmpwalk -v2c -c public IP_АДРЕС_СВИТЧА»
Удалось вычитать с Juniper, EdgeCore, D-Link, а Cisco пошла по своему пути и так вычитывать MAC-адреса не позволяет, но есть костыль описаный здесь habrahabr.ru/post/213247
Смотрите .1.3.6.1.2.1.17.4.3.1.2 или .1.3.6.1.2.1.17.7.1.2.2.1.2
1. SNMP придумали трусы?
Не трусы, но пока пишется система на php которая снимит мак по SNMP, это решение подошло очень кстати.

2. Почему на всех свитчах используются одинаковые данные для авторизации?
К сожалению так сложилось исторически на провайдере где я работаю. И высшее руководство такой метод авторизации вполне устраивает.

3. Почему «взаимодействуя с тех.поддержкой приходится лазить на свитчи и глядеть маки»?
У саппорта нет доступа к оборудованию. А от старого админа осталось так сказать мало информации. К примеру в каком порту абонент. Приходится искать.

А вообще когда я искал подобные скрипты, не нашел ничего подобного.
Лет 5 назад писал систему для себя по управлению свитчам EDGE core, если не ошибаюсь то взять через snmpget напрямую MAC с порта нельзя только через smpwalk. Ключ для snmpwalk: ".1.3.6.1.2.1.17.4.3.1.1". Вот сам код github.com/retspen/swmon/blob/master/mac.php#L160 как оно работает я уже не помню код написан в стиле проще некуда так что можно разобраться.
а у нас как то вот так
image
оч.удобно, сразу все видно
Я когда искал, что то по автоматизации ssh, Expect — тоже приглянулся. Но затем, я нашел paramiko. Ниже пример для Mikrotik.

#!/usr/bin/python

import paramiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("host",username="login",password="passwd")
stdin, stdout, stderr = ssh.exec_command("/ip arp print ")
result = stdout.read()
print result
Мне понравилось использовать pssh — заодно можно и массово управлять/запрашивать. На RoS 6.x и цисках вроде без проблем.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации