Gufo SNMP Example: Single Item Get Request
Get
is one of the basic SNMP operations allowing to query of the agent
for one or more management keys. Let's consider the situation of
getting the single key.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
Let's see the details.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
Import sys
module to parse the CLI argument.
Warning
We use sys.argv
only for demonstration purposes. Use argsparse
or alternatives
in real-world applications.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
SnmpSession
object holds all necessary API. We're using a synchronous
version from gufo.snmp.sync_client
.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
We define our main function and expect the following arguments:
Address of the agent.
SNMP community to authorize.
OID to query.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
First, we need to create SnmpSession
object which wraps the client's session.
The SnmpSession
may be used as an instance directly or operated as context manager
using the with
clause. When used as a context manager,
the client automatically closes all connections on the exit of context,
so its lifetime is defined explicitly.
SnmpSession
constructor offers lots of configuration variables for fine-tuning. Refer to the
SnmpSession reference
for further details. In our example, we set the agent's address and SNMP community
to the given values.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
We use SnmpSession.get()
function to query OID. See SnmpSession.get() reference for further details.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
It is up to the application how to deal with the result.
In our example we just print it.
get.py import sys
from gufo.snmp.sync_client import SnmpSession
def main ( addr : str , community : str , oid : str ) -> None :
with SnmpSession ( addr = addr , community = community ) as session :
r = session . get ( oid )
print ( r )
main ( sys . argv [ 1 ], sys . argv [ 2 ], sys . argv [ 3 ])
Lets run our main()
function pass first command-line parameters as address, community, and OID.
Running
Let's check our script. Run example as:
$ python3 examples/sync/get.py 127.0.0.1 public 1.3.6.1.2.1.1.6.0
Gufo SNMP Test