python, получение статуса портов на всём устройстве

Задача: необходимо получить статусы портов одним массивом, одной командой.

Решение: используем bulkCmd:

Работа с именованными массивами на Python

Задача: получить список портов и их состояний из БД в именованый массив.

Обьявление массива:

res[]

Добавление в массив:

res.append({name:{‘port_id’:port_id,’name’:name,’status’:status}});

Другие функции работы с массивом:

array.typecode — TypeCode символ, использованный при создании массива.

array.itemsize — размер в байтах одного элемента в массиве.

array.append(х) — добавление элемента в конец массива.

array.buffer_info() — кортеж (ячейка памяти, длина). Полезно для низкоуровневых операций.

array.byteswap() — изменить порядок следования байтов в каждом элементе массива. Полезно при чтении данных из файла, написанного на машине с другим порядком байтов.

array.count(х) — возвращает количество вхождений х в массив.

array.extend(iter) — добавление элементов из объекта в массив.

array.frombytes(b) — делает массив array из массива байт. Количество байт должно быть кратно размеру одного элемента в массиве.

array.fromfile(F, N) — читает N элементов из файла и добавляет их в конец массива. Файл должен быть открыт на бинарное чтение. Если доступно меньше N элементов, генерируется исключение EOFError , но элементы, которые были доступны, добавляются в массив.

array.fromlist(список) — добавление элементов из списка.

array.index(х) — номер первого вхождения x в массив.

array.insert(n, х) — включить новый пункт со значением х в массиве перед номером n. Отрицательные значения рассматриваются относительно конца массива.

array.pop(i) — удаляет i-ый элемент из массива и возвращает его. По умолчанию удаляется последний элемент.

array.remove(х) — удалить первое вхождение х из массива.

array.reverse() — обратный порядок элементов в массиве.

array.tobytes() — преобразование к байтам.

array.tofile(f) — запись массива в открытый файл.

array.tolist() — преобразование массива в список.

Пример:

Получится чудный вывод на экран чтото типа:

RuntimeError: autoconf error

Ошибка возникла при попытке установить модуль pysnmp  во FreeBSD:

Решение:

— ставим gcc, убеждаемся что /tmp смонтирован с флагом exec. Помогло. Теперь другая ошибка:

src/_fastmath.c:36:11: fatal error: ‘gmp.h’ file not found

Решение: копируем gmp.h из /usr/include/ в /usr/local/include/

Включаем и выключаем порты на свичах Dlink, SNR, QSW скрипт на Python

Задача: считать текущий статус порта, и в зависимости от него или выключить порт, или включить.

Решение: скрипт на python

 

Работаем на python с протоколом snmp

Есть несколько модулей, которые помогают работать с snmp на python. Гугл в помощь какие. Наиболее популярный: pysnmp. В Ubuntu ставится как:

Напишем на Python аналог команды из консоли, которая получает  список мак адресов на портах свичей Dlink:

Снимок экрана из 2016-05-20 10-05-50

Код:

Снимок экрана из 2016-05-20 10-07-41

1 5 6 7 8