summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES146
-rw-r--r--README80
-rw-r--r--setup.py18
3 files changed, 203 insertions, 41 deletions
diff --git a/CHANGES b/CHANGES
index 769ac61..0793b52 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,149 @@
+Thu Jun 07 19:23:33 MSD 2003
+
+Changes to version 3.3.4
+------------------------
+
+- Raw values access interface of asn1.base.SimpleAsn1Object reworked for
+ better performance
+- initialValue of asn1.base.SimpleAsn1Object class objects may now be
+ defined as method
+- Bugfix to asn1.base.SimpleAsn1Object value assignment -- copy mutable
+ values rather then store a reference to the passed one
+- The tree-making facility of asn1.univ.ObjectIdentifier class reworked
+ for better performance and clearer protocol
+- Bugfix initial value assignment of proto.rfc1157.RequestId &
+ proto.rfc1905.RequestId classes to get much less repetitive values
+- The getTerminal() method implemented to all base ASN1 data types
+ (simple & structed) for a more constent API
+- Bugfix to examples/* var-bind pretty printing (IpAddress wouldn't print).
+- UCD command line interface mixins now support the rest of SNMP data types
+ (Gauge, Counter32 etc.)
+
+Thu Mar 20 18:43:55 MSD 2003
+
+Changes to version 3.3.3
+------------------------
+
+- The constraints methods set of asn1.base.Asn1Object converted to
+ a set of flags accompanied by a single constraints checking
+ method for better efficiency.
+- The asn1.base.ChoiceTypeAsn1Object.get() method converted to
+ getTerminal() to handle possible structured Choice elements
+ (may cause incompatibilities!).
+- ber.base.decodeTag() function substitutes functionally similar
+ code scattered over a few BER decoders.
+- asn1.univ.ObjectIdentifier.str2num()/num2str() methods code optimized
+ for better performance.
+- Bugfix to handle_error() methods of udp.asynrole.manager/agent.
+- Bugfix to examples/snmpwalk.py v2c.EndOfMibView handling in
+ response.
+- examples/ converted to use `env' for interpreter invocation.
+- Many minor optimization changes.
+
+Wed Mar 19 18:01:05 MSD 2003
+
+Changes to version 3.3.2
+------------------------
+
+- Bugfix to examples/asyncmgr.py to make the tool simultaneous
+ request safe
+- Bugfix to setup.py -- some sub-packages were not installed
+- The request-specific match() method of proto.v1 and proto.v2c
+ split on request and PDU-specific parts
+- Half-baked SNMP v.3 files appeared in 3.3.1 by mistake (rfc2571.py,
+ rfc2572.py) excluded
+
+Tue Jan 14 19:41:21 MSD 2003
+
+Changes to version 3.3.1
+------------------------
+
+- role.manager() now uses a user-specified callback function to
+ verify received SNMP messages (this mostly addresses the out-of-order
+ SNMP messages problem).
+- examples/* tools updated to utilize role.manager()'s message verification
+ callback function
+- Net-SNMP-style command-line interface implemented (as a sub-package
+ pysnmp.proto.cli)
+- High-level API to SNMP message objects implemented (as a sub-package
+ pysnmp.proto.api)
+- The examples/asyncmgr.py tool now supports all available SNMP message
+ types
+- pysnmp.asn1.ber sub-package re-written to act as an optional mix-in
+ to base ASN.1 objects (and moved under pysnmp.asn1.encoding package)
+- quite a few small fixes
+
+Thu Nov 14 18:09:53 MSD 2002
+
+Changes to version 3.2.2
+------------------------
+
+- Bugfix to default value for 'dst' address parameter in
+ mapping/udp/role.py, mapping/udp/asynrole.py and
+ mapping/udp/bulkrole.py.
+- asyncode compatibility bugfix to asynrole.manager.handle_error()
+ and asynrole.agent.handle_error() parameters list. Affected the
+ mapping/udp/asynrole.py and examples/asyncmgr.py scripts.
+- Bugfix to transport-level exceptions handling code in
+ examples/snmpbulk.py and mapping/udp/bulkrole.py.
+- Bugfix to reportTypeFlag handling at examples/snmpbulk.py.
+- Command line parameters support implemented to the
+ examples/asyncmgr.py script.
+
+Thu Oct 31 08:32:49 MSD 2002
+
+Changes to version 3.2.1
+------------------------
+
+- asn1.base.ChoiceTypeAsn1Object.get() method added for recursively
+ fetching enclosed scalar terminals whenever possible.
+- examples/*.py scripts updated to make use of the above feature
+ (by means of -R command line swich).
+
+Tue Oct 15 23:53:32 MSD 2002
+
+Changes to version 3.1.3
+------------------------
+
+- A few bugs fixed in example/snmptrap.py and example/snmpset.py
+
+Sat Oct 12 10:43:46 MSD 2002
+
+Changes to version 3.1.2
+------------------------
+
+- Incorrect params to role.agent() constructor in examples/snmptrapd.py fixed
+- The __all__ list memebers in rfc1155.py and rfc1902.py updated
+
+Fri Oct 11 18:34:31 MSD 2002
+
+Changes to version 3.1.1
+------------------------
+
+- A bug in setup.py (that prevents package installation) has been fixed.
+- Syntax typo in asynrole.py has been fixed.
+
+Mon Oct 7 08:29:58 MSD 2002
+
+Changes to version 3.1.0
+------------------------
+
+- The snmpy compatibility sub-package added.
+- __hash__() methods implelented for Asn1Object-based
+ objects.
+- Many stupid typos fixed thoughout the code.
+
+Tue Oct 1 08:02:43 MSD 2002
+
+Changes to version 3.0.0
+------------------------
+
+- Major re-write of the whole package aimed at a more accurate, standards
+ compliant and extensible ASN.1 and SNMP protocol objects implementation.
+
+ Backward compatibility with earlier PySMMP versions is preserved by means
+ of compatibility sub-packages.
+
Wed Dec 18 20:39:00 MSD 2002
Changes to version 2.0.8
diff --git a/README b/README
index e60381a..3352488 100644
--- a/README
+++ b/README
@@ -1,8 +1,8 @@
-SNMP engine for Python, version 2.0.8
--------------------------------------
+SNMP engine for Python, version 3.x
+-----------------------------------
-This is a Python implementation of SNMP v.1/v.2c engine. It's general
+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.
@@ -10,30 +10,37 @@ 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!).
-This code is known to be used under Python interpreter versions 1.5.2,
-1.6 and 2.0.
-
-This package is distributed under terms and conditions of BSD-style
+The PySNMP package is distributed under terms and conditions of BSD-style
license. See the LICENSE file for details.
-PRECAUTIONS
+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
-----------
-If you are starting a new project, consider trying the 3.x branch
-of PySNMP which is written in a more standards-compliant way and is
-[hopefully] stable enough by the time of this writing.
+* 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)
-Unfortunately, version 2.x of PySNMP software is *INCOMPATIBLE* with
-its 1.x branch at the moment. For a fully compatible solution, use the
-3.x branch of PySNMP package.
+PRECAUTIONS
+-----------
-While the pure-Python MIB compiler project is underway, the ASN.1
-types of Object IDs associated values must be explicitly specified
-whenever user application passes values to SNMP engine.
+For notes on backward compatibility with previous PySNMP revisions, please,
+refer to the COMPATIBILITY file in the PySNMP distribution.
-Lack of MIB support leads to another limitation -- all the PySNMP
-methods accept and report Object IDs only in dotted numeric (that is
-not symbolic) representation.
+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
------------
@@ -50,13 +57,13 @@ 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-2.0.8.tar
-$ echo pysnmp-2.0.8 > pysnmp.pth
+$ tar xvf /tmp/pysnmp-3.3.1.tar
+$ echo pysnmp-3.3.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-2.0.8:$PYTHONPATH
+export PYTHONPATH=/home/ilya/src/py/pysnmp-3.3.1:$PYTHONPATH
The latter trick is also known to work on Windows.
@@ -74,23 +81,18 @@ Here is an example of using pysnmp package for querying SNMP agent
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 import role, v2c, asn1
->>> req = v2c.GETREQUEST()
->>> req['encoded_oids'] = [ asn1.OBJECTID().encode('1.3.6.1.2.1.1.1.0') ]
+>>> from pysnmp.proto import v1
+>>> from pysnmp.proto.api import generic
+>>> from pysnmp.mapping.udp import role
+>>> req = v1.GetRequest()
+>>> req.apiGetPdu().apiSetVarBind([('1.3.6.1.2.1.1.1.0', None)])
>>> tr = role.manager(('router-1.glas.net', 161))
->>> (rawrsp, src) = tr.send_and_receive(req.encode())
->>> rsp = v2c.RESPONSE()
->>> rsp.decode(rawrsp)
->>> oids = map(lambda x:x[0], map(asn1.OBJECTID().decode, rsp['encoded_oids']))
->>> print oids
-['.1.3.6.1.2.1.1.1.0']
->>> vals = map(lambda x: x[0](), map(asn1.decode, rsp['encoded_vals']))
->>> print vals
-['Cisco Internetwork Operating System Software \015\012IOS (tm) 5300 Software
-(C5300-J-M), Experimental Version 12.1(20001115:152556) [haag-V121_4 102]
-\015\012Copyright (c) 1986-2000 by cisco Systems, Inc.\015\012Compiled
-Mon 20-Nov-00 19:22 by haag']
->>>
+>>> (answer, src) = tr.send_and_receive(req.encode())
+>>> rsp = v1.GetResponse()
+>>> rsp.decode(answer)
+>>> vars = rsp.apiGetPdu().apiGetVarBind()
+>>> print vars
+[('.1.3.6.1.2.1.1.1.0', OctetString('Cisco Internetwork Operating System Software \015\012IOS (tm) 5400 Software(C5400-JS-M), Version 12.2(11.8b), MAINTENANCE INTERIM SOFTWARE\015\012 Copyright (c) 1986-2002 by cisco Systems, Inc.\015\012Compiled Tue 30-Jul-02 19:02 by pwade'))]
8X---------------- cut here --------------------
diff --git a/setup.py b/setup.py
index c02307f..d1ac21c 100644
--- a/setup.py
+++ b/setup.py
@@ -3,11 +3,25 @@
from distutils.core import setup
setup(name="pysnmp",
- version="2.0.8",
+ version="3.3.4",
description="Python SNMP Toolkit",
author="Ilya Etingof",
author_email="ilya@glas.net ",
url="http://sourceforge.net/projects/pysnmp/",
- packages=['pysnmp'],
+ packages = [ 'pysnmp',
+ 'pysnmp.asn1',
+ 'pysnmp.asn1.encoding',
+ 'pysnmp.asn1.encoding.ber',
+ 'pysnmp.proto',
+ 'pysnmp.proto.api',
+ 'pysnmp.proto.api.generic',
+ 'pysnmp.proto.cli',
+ 'pysnmp.proto.cli.ucd',
+ 'pysnmp.mapping',
+ 'pysnmp.mapping.udp',
+ 'pysnmp.compat',
+ 'pysnmp.compat.pysnmp1x',
+ 'pysnmp.compat.pysnmp2x',
+ 'pysnmp.compat.snmpy' ],
license="BSD"
)