2017-05-17 4 views
0

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'" 

Répondre

0

Assurez-vous que vous utilisez la dernière pyasn1/pysnmp. De la traceback il semble que vous courez un vieux pyasn1.

+0

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. –

+0

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? –

+0

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. –