Mon commutateur est une série Catalyst 2960-x, j'ai déjà configuré avec SNMP, Im en utilisant maintenant PySNMP, mais Im nouveau à ce sujet, je sais déjà que la commande que je doit utiliser est ce "snmpset sudo -v 2c -c SNMPv2-SMI :: mib-2.105.1.1.1.3.1.13 i 2". Mais je ne le fais pas, quelqu'un peut-il m'aider s'il vous plait.Je veux éteindre et ne pas éteindre les ports du Switch
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')
Ce code me donne cette erreur:
" 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'"
Merci l'homme que je l'ai fait je n'étais pas avec la version du pyasn1 et aussi j'étais avec la version de pysnm 4.3.2, il devait être avec la version 4.3.5. –
Maintenant, j'ai une autre question, comment puis-je connaître l'état de mon port de commutateur? Donc, je peux allumer ou éteindre le port? –
Vous devez utiliser la commande SNMP GET à la place pour SNMP SET one. En termes de pysnmp vous devriez changer 'setCmd' pour' getCmd' et laisser tomber la partie de valeur dans 'ObjectType (ObjectIdentity ('SNMPv2-SMI', 'mib-2', '105.1.1.1.3.1.% D'% port)) '. De cette façon, vous lirez l'état actuel du port au lieu de le définir dans certains états. –