0
我的交換機是Catalyst 2960-x系列,我已經配置了SNMP,我現在用的是PySNMP,但是我現在已經知道了,我已經知道命令了,我必須使用的是「sudo snmpset -v 2c -c SNMPv2-SMI :: mib-2.105.1.1.1.3.1.13 i 2」。但即使沒有完成,有人可以幫忙。我想關機並且不關機交換機的端口
from pysnmp.hlapi import*
setcommunity = 'EuricoFerreira'
host = '192.168.150.231'
port = 13
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')
此代碼是給我這個錯誤:
" Traceback (most recent call last):
File "<string>", line 878, in writeTest
File "<string>", line 570, in writeTest
File "<string>", line 469, in writeTest
File "<string>", line 766, in getBranch
pysnmp.smi.error.NoSuchInstanceError: NoSuchInstanceError({'idx': 0, 'name': (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 8, 115, 45, 55, 50, 50, 51, 54, 51, 55, 52, 52)})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pi/Downloads/pysnmp-4.3.2/snmpTest.py", line 17, in <module>
errorIndication, errorStatus, errorIndex, varBinds = next(set_gen)
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/hlapi/asyncore/sync/cmdgen.py", line 210, in setCmd
lookupMib=options.get('lookupMib', True)))
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/hlapi/asyncore/cmdgen.py", line 231, in setCmd
addrName, paramsName = lcd.configure(snmpEngine, authData, transportTarget)
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/hlapi/lcd.py", line 44, in configure
authData.securityName
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/entity/config.py", line 71, in addV1System
((snmpCommunityEntry.name + (8,) + tblIdx, 'destroy'),)
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/smi/instrum.py", line 250, in writeVars
return self.flipFlopFsm(self.fsmWriteVar, vars, acInfo)
File "/home/pi/Downloads/pysnmp-4.3.2/pysnmp/smi/instrum.py", line 218, in flipFlopFsm
rval = f(tuple(name), val, idx, acInfo)
File "<string>", line 470, in writeTest
File "<string>", line 1117, in writeTest
File "<string>", line 1088, in __delegate
File "<string>", line 886, in writeTest
File "<string>", line 793, in createTest
File "<string>", line 699, in createTest
File "<string>", line 591, in setValue
File "<string>", line 289, in setValue
AttributeError: 'RowStatus' object has no attribute 'hasValue'"
感謝我做了它我沒有與pyasn1的版本,我也與pysnm 4.3.2的版本,它必須與版本4.3.5。 –
現在我還有一個問題,我怎麼知道我的交換機端口的狀態? 所以我可以打開或關閉端口? –
您應該使用SNMP GET命令來代替SNMP SET命令。按照pysnmp的術語,你應該改變getCmd的'setCmd'並將值部分放入'ObjectType(ObjectIdentity('SNMPv2-SMI','mib-2','105.1.1.1.3.1。%d'%port)) '。這樣你將讀取當前的端口狀態,而不是將其設置爲某個狀態。 –