How to get SNMPv3 by python with auth no priv? i try to do it with pysnmp but it not work. device :switch CISCO 2960
from pysnmp.hlapi import UsmUserData, usmHMACSHAAuthProtocol,usmAesCfb256Protocol
from pysnmp.hlapi import SnmpEngine, UdpTransportTarget, ContextData,ObjectType, ObjectIdentity, getCmd
snmpName =username
snmpPass = password
ipHost = ipAddress
auth=UsmUserData(userName=snmpName,authKey=snmpPass,authProtocol=usmHMACSHAAuthProtocol,privKey='',privProtocol=usmAesCfb256Protocol)
data = getCmd(SnmpEngine(),auth,UdpTransportTarget((ipHost, 161)),ContextData(),ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysName', 0)))
errorIndication, errorStatus, errorIndex, varBinds = next(data)
print(errorIndication, errorStatus, errorIndex, varBinds)
I get Errors Whene try to print this data with any way Errors:
>>> errorIndication, errorStatus, errorIndex, varBinds = next(data)
Traceback (most recent call last):
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/builder.py", line 401, in loadModules
self.loadModule(modName, **userCtx)
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/builder.py", line 377, in loadModule
raise error.MibNotFoundError(
pysnmp.smi.error.MibNotFoundError: MIB file "IF-MIB.py[co]" not found in search path (DirMibSource('/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/mibs'), DirMibSource('/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/mibs/instances'), DirMibSource('pysnmp_mibs'), DirMibSource('/home/alchimie/.pysnmp/mibs'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/hlapi/asyncore/sync/cmdgen.py", line 108, in getCmd
cmdgen.getCmd(snmpEngine, authData, transportTarget,
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/hlapi/asyncore/cmdgen.py", line 130, in getCmd
vbProcessor.makeVarBinds(snmpEngine, varBinds), __cbFun,
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/hlapi/varbinds.py", line 39, in makeVarBinds
__varBinds.append(varBind.resolveWithMib(mibViewController, ignoreErrors=False))
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/rfc1902.py", line 853, in resolveWithMib
self.__args[0].resolveWithMib(mibViewController)
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/rfc1902.py", line 480, in resolveWithMib
mibNode, = mibViewController.mibBuilder.importSymbols(
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/builder.py", line 441, in importSymbols
self.loadModules(modName, **userCtx)
File "/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/builder.py", line 410, in loadModules
raise error.MibNotFoundError('%s compilation error(s): %s' % (modName, errs))
pysnmp.smi.error.MibNotFoundError: IF-MIB compilation error(s): missingcaused by <class 'pysnmp.smi.error.MibNotFoundError'>: MIB file "IF-MIB.py[co]" not found in search path (DirMibSource('/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/mibs'), DirMibSource('/home/alchimie/Documents/django/venv/lib/python3.10/site-packages/pysnmp/smi/mibs/instances'), DirMibSource('pysnmp_mibs'), DirMibSource('/home/alchimie/.pysnmp/mibs'))
Your error message suggest that you don't have the MIB files installed. The current version of pysnmp
is by lextudio and not this one. Please ensure that that you have the updated version installed.
Here is some pseudocode based on the newer version of pysnmp
Please let me know if you still get the same error.
from pysnmp.hlapi import *
host_ip_address = ''
authentication = UsmUserData(
userName= 'your_user_name',
authKey= 'your_password',
authProtocol=usmHMACSHAAuthProtocol,
privKey='your_private_key',
privProtocol=usmAesCfb256Protocol
)
iterator = getCmd(SnmpEngine(),
authentication,
UdpTransportTarget((host_ip_address, 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
errorIndication, errorStatus, errorIndex, varBinds = next(iterator)
if errorIndication: # SNMP engine errors
print(errorIndication)
else:
if errorStatus: # SNMP agent errors
print('%s at %s' % (errorStatus.prettyPrint(), varBinds[int(errorIndex)-1] if errorIndex else '?'))
else:
for varBind in varBinds: # SNMP response contents
print(' = '.join([x.prettyPrint() for x in varBind]))
edit: pypi link was malformed