I would like to get the sysUpTime from SNMP
It's my first time working on this so i am not sure how to make it work. I downloaded the MIB Browser app and i get this:
How can i do it in python way? I am trying this code
from pysnmp.hlapi import *
import sys
def walk(host, oid):
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget((host, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)),
lookupMib=False,
lexicographicMode=False):
if errorIndication:
print(errorIndication, file=sys.stderr)
break
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'), file=sys.stderr)
break
else:
for varBind in varBinds:
print('%s = %s' % varBind)
walk('192.188.14.126', '1.3.6.1.2.1.1.3.0')
But i get an error
No SNMP response received before timeout
You should follow the standard tutorial and issue a GET request,
https://www.pysnmp.com/pysnmp/quick-start#fetch-snmp-variable
import asyncio
from pysnmp.hlapi.asyncio import *
@asyncio.coroutine
def run():
snmpEngine = SnmpEngine()
errorIndication, errorStatus, errorIndex, varBinds = yield from getCmd(
snmpEngine,
CommunityData('public', mpModel=0),
UdpTransportTarget(('192.188.14.126', 161)),
ContextData(),
ObjectType(ObjectIdentity('1.3.6.1.2.1.1.3.0'))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('{} at {}'.format(
errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'
)
)
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
snmpEngine.transportDispatcher.closeDispatcher()
asyncio.get_event_loop().run_until_complete(run())
WALK/GET-NEXT/GET-BULK are completely different operations that usually are used to query a table or discover objects. Don't misuse them.