diff options
author | elie <elie> | 2015-07-06 21:30:04 +0000 |
---|---|---|
committer | elie <elie> | 2015-07-06 21:30:04 +0000 |
commit | f5fff54ff3737b739e7597ab16591d28d3c7e6d6 (patch) | |
tree | d7756674acb22b60eaf8a226444d7c1941998605 /examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py | |
parent | 286c02d388e34fc3c0697a5f4ffaa7d5af9070ce (diff) | |
download | pysnmp-f5fff54ff3737b739e7597ab16591d28d3c7e6d6.tar.gz |
synchronous oneliner apps redesigned to offer Python generator-based
API along with more comprehensive set of accepted parameters
Diffstat (limited to 'examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py')
-rw-r--r-- | examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py b/examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py new file mode 100644 index 0000000..d9fc491 --- /dev/null +++ b/examples/v3arch/asyncore/oneliner/manager/cmdgen/get-v2c-with-custom-timeout-and-retries.py @@ -0,0 +1,49 @@ +# +# Command Generator +# +# Send SNMP GET request using the following options: +# +# * with SNMPv2c, community 'public' +# * over IPv4/UDP +# * to an Agent at demo.snmplabs.com:161 +# * for an OID in string form +# * use custom timeout and request retries values +# +# Transport timing settings (maximum number of request retries and +# individual request timeout in seconds) can be set on a per-target basis +# as explained by the code that follows. +# +# Keep in mind that while timeout value can be specified in fractions of a +# second, default pysnmp timer resolution is quite low (about 0.5 sec) +# so there's no much point in using timeouts which is not a multiple of 0.5 +# Internal timer can be programmatically adjusted to finer resolution if needed. +# +# If retries value is set to 0, pysnmp will issue a single request. Even +# if no response arrives, there will be no retry. Likewise, retries=1 +# means one initial request plus one retry. +# +from pysnmp.entity.rfc3413.oneliner.cmdgen import * + +for errorIndication, \ + errorStatus, errorIndex, \ + varBinds in getCmd(SnmpEngine(), + CommunityData('public'), + UdpTransportTarget( + ('demo.snmplabs.com', 161), timeout=1.5, retries=0 + ), + ContextData(), + ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'))): + # Check for errors and print out results + if errorIndication: + print(errorIndication) + else: + if errorStatus: + print('%s at %s' % ( + errorStatus.prettyPrint(), + errorIndex and varBinds[int(errorIndex)-1][0] or '?' + ) + ) + else: + for varBind in varBinds: + print(' = '.join([ x.prettyPrint() for x in varBind ])) + break |