如何在 Netgear GS710TUP 上使用 pySNMP 启用/禁用 PoE 端口
在我们之前的文章如何使用 pySNMP 从 Netgear GS710TUP 查询 SNMPv3 信息中,我们展示了如何将 pySNMP 连接到 Netgear GS710TUP 以查询简单信息。
以下示例脚本是 如何使用 SNMPv3 在 Netgear GS710TUP 上启用/禁用 PoE 端口电源的 pySNMP 等效脚本:它设置 1.3.6.1.2.1.105.1.1.1.3 (pethPsePortAdminEnable) 中的相关 OID。
GS710TUP 有 8 个 PoE 端口,以下是各个端口的可用 OID:
poe_oids.txt
1.3.6.1.2.1.105.1.1.1.3.1.1 # Port 1
1.3.6.1.2.1.105.1.1.1.3.1.2 # Port 2
1.3.6.1.2.1.105.1.1.1.3.1.3 # Port 3
1.3.6.1.2.1.105.1.1.1.3.1.4 # Port 4
1.3.6.1.2.1.105.1.1.1.3.1.5 # Port 5
1.3.6.1.2.1.105.1.1.1.3.1.6 # Port 6
1.3.6.1.2.1.105.1.1.1.3.1.7 # Port 7
1.3.6.1.2.1.105.1.1.1.3.1.8 # Port 8在我们的示例中,我们将启用端口 1 的电源:
pysnmp_set_port.py
import pysnmp.hlapi as snmp
portNumber = 1
iterator = snmp.setCmd(
snmp.SnmpEngine(),
snmp.UsmUserData('admin', 'SWITCH_ADMIN_PASSWORD',
authProtocol=snmp.usmHMACSHAAuthProtocol,
privProtocol=snmp.usmNoPrivProtocol),
snmp.UdpTransportTarget(('SWITCH_IP_ADDRESS', 161)),
snmp.ContextData(),
snmp.ObjectType(
snmp.ObjectIdentity(f'1.3.6.1.2.1.105.1.1.1.3.1.{portNumber}'),
snmp.Integer(1))
)
errorIndication, errorStatus, errorIndex, varBinds = next(iterator)
if errorIndication:
print(errorIndication)
elif errorStatus:
idx = int(errorIndex) - 1
location = errorIndex and varBinds[idx][0] or '?'
print(f"{errorStatus.prettyPrint()} at {location}")
else: # Success
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))要禁用端口 1 的电源,替换
snmp_integer_enable.py
snmp.Integer(1)为
snmp_integer_disable.py
snmp.Integer(2)注意 1 值表示布尔 true(如启用 PoE 输出),而 2 表示布尔 false,禁用端口上的 PoE 输出。
Check out similar posts by category:
Networking, PoE, Python, SNMP
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow