summaryrefslogtreecommitdiff
path: root/README
blob: 06e0fa9cd68f4c6c928bdc38572eba3c74ea06cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

SNMP engine for Python, version 3.x
-----------------------------------

This is a Python implementation of SNMP v.1/v.2c engine. Its general
functionality is to assemble/disassemble SNMP messages from/into
given SNMP Object IDs along with associated values. PySNMP also provides
a few transport methods specific to TCP/IP networking.

PySNMP is written entirely in Python and is self-sufficient in terms
that it does not rely on any third party tool (it is not a wrapper!).

The PySNMP package is distributed under terms and conditions of BSD-style
license. See the LICENSE file for details.

FEATURES
--------

* Complete SNMPv1 and SNMPv2c support
* Seamless SNMP manager and agent roles support
* Both synchronous and asynchronous IO API support
* Fully documented API with many examples
* Generic, objective ASN.1 framework
* Partial MIB I/II data types and macros implementation (check
  CVS at SF for recent development)
* 100% Python, works with Python 1.x and later
* MT-safe

MISFEATURES
-----------

* No MIB compiler (though, it's possible to compile ASN.1 code into PySNMP
  classes by hand, oh...)
* No SNMP v.3 support (though, it's almost implemented, check CVS at SF)

PRECAUTIONS
-----------

For notes on backward compatibility with previous PySNMP revisions, please,
refer to the COMPATIBILITY file in the PySNMP distribution.

Since MIB support is not integrated into PySNMP package at the moment, this
software accept and report Object IDs only in a non-symbolic (dotted) notation.

INSTALLATION
------------

You might try distutils to install PySNMP by just typing:

$ python setup.py install

This should work on Unix and Microsoft Windows. Alternatively you can
install PySNMP by hand:

On UNIX, the pysnmp package can be put into the python/site-packages/
directory in the following way (assuming your Python distribution
resides under /usr/local/lib/python):

$ cd /usr/local/lib/python/site-packages
$ tar xvf /tmp/pysnmp-3.0.1.tar
$ echo pysnmp-3.0.1 > pysnmp.pth

Alternatively, the $PYTHONPATH environment variable can be updated to
point to your PySNMP package location (assuming your UNIX shell is bash):

export PYTHONPATH=/home/ilya/src/py/pysnmp-3.0.1:$PYTHONPATH

The latter trick is also known to work on Windows.

I've been told, that on Windows 2000, one needs to go to "Control panel"
-> "System" -> "Advanced" -> "Environment variables" and add/update the
PYTHONPATH environment variable there.

OPERATION
---------

Here is an example of using pysnmp package for querying SNMP agent
(cisco router) for arbitrary value.

8X---------------- cut here --------------------

Python 1.5.2 (#3, Aug 25 1999, 19:14:24)  [GCC 2.8.1] on sunos5
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> from pysnmp.proto import v1
>>> from pysnmp.mapping.udp import role
>>> req = v1.GetRequest()
>>> req['pdu']['get_request']['variable_bindings'].append(v1.VarBind(name=v1.ObjectName('1.3.6.1.2.1.1.1.0')))
>>> tr = role.manager(('router-1.glas.net', 161))
>>> (answer, src) = tr.send_and_receive(req.encode())
>>> rsp = v1.GetResponse()
>>> rsp.decode(answer)
>>> oids = map(lambda x: x['name'].get(), rsp['pdu']['get_response']['variable_bindings'])
>>> print oids
['.1.3.6.1.2.1.1.1.0']
>>> vals = map(lambda x: x['value'], rsp['pdu']['get_response']['variable_bindings'])
>>> print vals
[ObjectSyntax(simple=SimpleSyntax(string=OctetString('Cisco Internetwork Operating System Software \015\012IOS (tm) 5400 Software (C5400-JS-M), Version 12.2(11.8b), MAINTENANCE INTERIM SOFTWARE\015\012Copyright (c) 1986-2002 by cisco Systems, Inc.\015\012Compiled Tue 30-Jul-02 19:02 by pwade')))]
>>> print map(lambda x: x.get(), vals)
['Cisco Internetwork Operating System Software \015\012IOS (tm) 5400 Software (C5400-JS-M), Version 12.2(11.8b), MAINTENANCE INTERIM SOFTWARE\015\012Copyright (c) 1986-2002 by cisco Systems, Inc.\015\012Compiled Tue 30-Jul-02 19:02 by pwade']
>>>

8X---------------- cut here --------------------

See package documentation and examples/ directory for more information
on PySNMP services.

AVAILABILITY
------------

The PySNMP software is available for download from project's homepage:
http://sourceforge.net/projects/pysnmp/

GETTING HELP
------------

Once anything does not work as expected, please, try browsing PySNMP
mailing list archives at http://sourceforge.net/mail/?group_id=14735
or post your question there.

FEEDBACK
--------

I'm interested in bug reports and fixes, suggestions and improvements.
I'd be happy knowning whenever you used the PySNMP software for whatever
purpose. Please, send me a note then. Thanks!

=-=-=
mailto: ilya@glas.net