PYSNMP打开/关闭交换机端口

时间:2017-05-15 15:56:46

标签: linux python-3.x pysnmp

我是使用PYSNMP协议的新手,我试图通过SNMP协议断开和连接交换机的端口。 我已经有一个与计算机通信的交换机,在这种情况下将是一个覆盆子pi 3,但我需要一个python脚本,为我这样做。我已经设法导入PYSNMP库,进入我的scipt,我知道我必须使用最可能的SET和GET函数来改变端口的状态,从shutdonw到no shutdown,但我不知道知道该怎么做或我从哪里开始。你能帮助我吗?你需要知道什么才能成功,我可以告诉你?

1 个答案:

答案 0 :(得分:0)

您知道您的交换机支持基于SNMP的端口管理吗?它实际上取决于交换机,翻转端口的方式通常是特定于供应商的,应该在交换机文档和/或MIB文件中进行描述。

我的建议是先用你的开关尝试使用SNMP:

$ snmpset -v2c -c <community> <hostname> IF-MIB::ifAdminStatus.interface.1 = up

$ snmpset -v2c -c <community> <hostname> IF-MIB::ifAdminStatus.interface.1 = down

其中1是端口#0索引。默认情况下,写入SNMP社区字符串可能设置为private

虽然您的交换机可能会使用其他一些MIB对象进行端口管理,或者根本不支持SNMP。

一旦弄清楚如何将SNMP用于您的目的,您可以在pysnmp like this中表达。

编辑:

from pysnmp.hlapi import *

setcommunity = 'private'
host = 'demo.snmplabs.com'
port = 1

snmp_engine = SnmpEngine()

set_gen = setCmd(snmp_engine,
                 CommunityData(setcommunity),
                 UdpTransportTarget((host, 161)),
                 ContextData(),
                 ObjectType(ObjectIdentity('SNMPv2-SMI', 'mib-2', '105.1.1.1.3.1.%d' % port), Integer(2)))

errorIndication, errorStatus, errorIndex, varBinds = next(set_gen)
if errorIndication or errorStatus:
    print('SNMP error: %s' % errorIndication or errorStatus)
else:
    print('SNMP succeeded')

请记住,您可以通过一个SNMP命令翻转多个(几十个)端口。