Пропарился полтора дня с попыткой свящать snmp и python'а.
Сначала пробовал PySNMP — не получилось. При запуске программы орет на пропущенные скобки, хотя все на месте.
Позже пробовал twistedsnmp — такая же проблема где-то пропущена закрывающаяся скобка и программа не запускается.
Отчаявшись — решил собрать библиотеку дла python'а из Net-snmp. При выполнении
python python.sh build
выдается более 20000 строк об ошибках и сообщение, что 'cc' имеет ошибки.
И тут, покапавшись в портах, нахожу программку с невзрачным названием yapsnmp (как позже оказалось это абривеатура). Установка прошла гладко. Но смутил пример автора для выполнения запроса:
yapsnmp.Session('router45-ny').walk('system')
Проблема была в следующем - т.к. у меня все мои девайсы используют разные версии snmp, то в примере автора не было указано ни версии протокола, ни комьюнити. Открыв доки - тоже не нашел ничего внятного, кроме того, что было в общих чертах указано что они могут быть. Попарился немного и о чудо!!! Программа заработала. Вот так все будет 100% работать:
import yapsnmp
print yapsnmp.Session('10.10.1.1', version=2, community='public').walk('ifOperStatus')
А вот, собственно, вывод:
(('ifOperStatus.1', 'up'), ('ifOperStatus.2', 'up'), ('ifOperStatus.3', 'down'), ('ifOperStatus.4', 'down'), ('ifOperStatus.5', 'down'), ('ifOperStatus.6', 'down'), ('ifOperStatus.7', 'down'), ('ifOperStatus.8', 'down'), ('ifOperStatus.9', 'down'), ('ifOperStatus.10', 'down'), ('ifOperStatus.11', 'down'), ('ifOperStatus.12', 'down'), ('ifOperStatus.13', 'down'), ('ifOperStatus.14', 'down'), ('ifOperStatus.15', 'down'), ('ifOperStatus.16', 'down'), ('ifOperStatus.17', 'down'), ('ifOperStatus.18', 'down'), ('ifOperStatus.19', 'down'), ('ifOperStatus.20', 'down'), ('ifOperStatus.21', 'down'), ('ifOperStatus.22', 'down'), ('ifOperStatus.23', 'down'), ('ifOperStatus.24', 'down'), ('ifOperStatus.25', 'down'), ('ifOperStatus.26', 'down'), ('ifOperStatus.27', 'down'), ('ifOperStatus.28', 'down'), ('ifOperStatus.29', 'down'), ('ifOperStatus.30', 'down'), ('ifOperStatus.31', 'down'), ('ifOperStatus.32', 'down'), ('ifOperStatus.33', 'down'), ('ifOperStatus.34', 'down'), ('ifOperStatus.35', 'down'), ('ifOperStatus.36', 'down'), ('ifOperStatus.37', 'down'), ('ifOperStatus.38', 'down'), ('ifOperStatus.39', 'down'), ('ifOperStatus.40', 'down'), ('ifOperStatus.41', 'down'), ('ifOperStatus.42', 'down'), ('ifOperStatus.43', 'down'), ('ifOperStatus.44', 'down'), ('ifOperStatus.45', 'down'), ('ifOperStatus.46', 'down'), ('ifOperStatus.47', 'down'), ('ifOperStatus.48', 'down'), ('ifOperStatus.49', 'up'), ('ifOperStatus.50', 'down'), ('ifOperStatus.51', 'down'), ('ifOperStatus.52', 'up'))
Думаю, что кому-то пригодится.