diff -urNp net-snmp-5.7.3/configure pnew/configure --- net-snmp-5.7.3/configure 2018-05-09 13:53:32.757997551 +0200 +++ pnew/configure 2018-05-02 12:09:38.592944958 +0200 @@ -6412,8 +6412,8 @@ $as_echo "no" >&6; } fi -# Extract the first word of "python", so it can be a program name with args. -set dummy python; ac_word=$2 +# Extract the first word of "python3", so it can be a program name with args. +set dummy python3; ac_word="python3" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHONPROG+:} false; then : diff -urNp net-snmp-5.7.3/configure.d/config_os_progs pnew/configure.d/config_os_progs --- net-snmp-5.7.3/configure.d/config_os_progs 2014-12-08 21:23:22.000000000 +0100 +++ pnew/configure.d/config_os_progs 2018-05-02 11:54:39.816551980 +0200 @@ -57,7 +57,7 @@ AC_PATH_PROG(AUTOCONF, autoconf) AC_PATH_PROG(AUTOHEADER, autoheader) AC_PATH_PROG([PERLPROG], perl) AC_PATH_PROG([PSPROG], ps) -AC_PATH_PROG([PYTHONPROG],python) +AC_PATH_PROG([PYTHONPROG],python3) AC_PATH_PROG([UNAMEPROG], uname) AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG", [Where is the uname command]) diff -urNp net-snmp-5.7.3/Makefile.in pnew/Makefile.in --- net-snmp-5.7.3/Makefile.in 2014-12-08 21:23:22.000000000 +0100 +++ pnew/Makefile.in 2018-05-02 10:12:12.496567598 +0200 @@ -222,7 +222,7 @@ perlcleanfeatures: # python specific build rules # -PYMAKE=$(PYTHON) setup.py $(PYTHONARGS) +PYMAKE=/usr/bin/python3 setup.py $(PYTHONARGS) pythonmodules: subdirs @(dir=`pwd`; cd python; $(PYMAKE) build --basedir=$$dir) ; \ if test $$? != 0 ; then \ diff -urNp net-snmp-5.7.3/python/netsnmp/client_intf.c pnew/python/netsnmp/client_intf.c --- net-snmp-5.7.3/python/netsnmp/client_intf.c 2014-12-08 21:23:22.000000000 +0100 +++ pnew/python/netsnmp/client_intf.c 2018-05-02 11:19:54.447257954 +0200 @@ -979,7 +979,7 @@ py_netsnmp_attr_string(PyObject *obj, ch PyObject *attr = PyObject_GetAttrString(obj, attr_name); if (attr) { int retval; - retval = PyString_AsStringAndSize(attr, val, len); + retval = PyBytes_AsStringAndSize(attr, val, len); Py_DECREF(attr); return retval; } @@ -996,7 +996,7 @@ py_netsnmp_attr_long(PyObject *obj, char if (obj && attr_name && PyObject_HasAttrString(obj, attr_name)) { PyObject *attr = PyObject_GetAttrString(obj, attr_name); if (attr) { - val = PyInt_AsLong(attr); + val = PyLong_AsLong(attr); Py_DECREF(attr); } } @@ -1079,11 +1079,11 @@ __py_netsnmp_update_session_errors(PyObj py_netsnmp_attr_set_string(session, "ErrorStr", err_str, STRLEN(err_str)); - tmp_for_conversion = PyInt_FromLong(err_num); + tmp_for_conversion = PyLong_FromLong(err_num); PyObject_SetAttrString(session, "ErrorNum", tmp_for_conversion); Py_DECREF(tmp_for_conversion); - tmp_for_conversion = PyInt_FromLong(err_ind); + tmp_for_conversion = PyLong_FromLong(err_ind); PyObject_SetAttrString(session, "ErrorInd", tmp_for_conversion); Py_DECREF(tmp_for_conversion); } @@ -2607,10 +2607,22 @@ static PyMethodDef ClientMethods[] = { {NULL, NULL, 0, NULL} /* Sentinel */ }; +static struct PyModuleDef ModuleDefinition = { + PyModuleDef_HEAD_INIT, + "client_intf", + NULL, + -1, + ClientMethods, + NULL, + NULL, + NULL, + NULL +}; + PyMODINIT_FUNC initclient_intf(void) { - (void) Py_InitModule("client_intf", ClientMethods); + PyModule_Create(&ModuleDefinition); } diff -urNp net-snmp-5.7.3/python/netsnmp/client.py pnew/python/netsnmp/client.py --- net-snmp-5.7.3/python/netsnmp/client.py 2014-12-08 21:23:22.000000000 +0100 +++ pnew/python/netsnmp/client.py 2018-05-02 13:06:08.609571674 +0200 @@ -35,12 +35,12 @@ def _parse_session_args(kargs): 'TheirHostname':'', 'TrustCert':'' } - keys = kargs.keys() + keys = list(kargs.keys()) for key in keys: - if sessArgs.has_key(key): + if key in sessArgs: sessArgs[key] = kargs[key] else: - print >>stderr, "ERROR: unknown key", key + print("ERROR: unknown key", key, file=stderr) return sessArgs def STR(obj): @@ -127,7 +127,7 @@ class Session(object): sess_args = _parse_session_args(args) - for k,v in sess_args.items(): + for k,v in list(sess_args.items()): self.__dict__[k] = v diff -urNp net-snmp-5.7.3/python/netsnmp/__init__.py pnew/python/netsnmp/__init__.py --- net-snmp-5.7.3/python/netsnmp/__init__.py 2014-12-08 21:23:22.000000000 +0100 +++ pnew/python/netsnmp/__init__.py 2018-05-09 13:47:17.708229826 +0200 @@ -1 +1 @@ -from client import * +from .client import * diff -urNp net-snmp-5.7.3/python/netsnmp/tests/test.py pnew/python/netsnmp/tests/test.py --- net-snmp-5.7.3/python/netsnmp/tests/test.py 2014-12-08 21:23:22.000000000 +0100 +++ pnew/python/netsnmp/tests/test.py 2018-05-09 13:47:57.132106532 +0200 @@ -8,7 +8,7 @@ import time class BasicTests(unittest.TestCase): def testFuncs(self): - print "" + print ("") var = netsnmp.Varbind('sysDescr.0') var = netsnmp.Varbind('sysDescr','0') var = netsnmp.Varbind( @@ -19,67 +19,67 @@ class BasicTests(unittest.TestCase): var = netsnmp.Varbind('.1.3.6.1.2.1.1.1','0') - print "---v1 GET tests -------------------------------------\n" + print ("---v1 GET tests -------------------------------------\n") res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpget result: ", res, "\n" + print(("v1 snmpget result: ", res, "\n")) - print "v1 get var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print(("v1 get var: ", var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 GETNEXT tests-------------------------------------\n" + print ("---v1 GETNEXT tests-------------------------------------\n") res = netsnmp.snmpgetnext(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpgetnext result: ", res, "\n" + print(("v1 snmpgetnext result: ", res, "\n")) - print "v1 getnext var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print(("v1 getnext var: ", var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 SET tests-------------------------------------\n" + print ("---v1 SET tests-------------------------------------\n") var = netsnmp.Varbind('sysLocation','0', 'my new location') res = netsnmp.snmpset(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpset result: ", res, "\n" + print(("v1 snmpset result: ", res, "\n")) - print "v1 set var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print(("v1 set var: ", var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 walk tests-------------------------------------\n" + print ("---v1 walk tests-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) - print "v1 varlist walk in: " + print ("v1 varlist walk in: ") for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print((" ",var.tag, var.iid, "=", var.val, '(',var.type,')')) res = netsnmp.snmpwalk(vars, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpwalk result: ", res, "\n" + print(("v1 snmpwalk result: ", res, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 walk 2-------------------------------------\n" + print ("---v1 walk 2-------------------------------------\n") - print "v1 varbind walk in: " + print ("v1 varbind walk in: ") var = netsnmp.Varbind('system') res = netsnmp.snmpwalk(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpwalk result (should be = orig): ", res, "\n" + print(("v1 snmpwalk result (should be = orig): ", res, "\n")) - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 multi-varbind test-------------------------------------\n" + print ("---v1 multi-varbind test-------------------------------------\n") sess = netsnmp.Session(Version=1, DestHost='localhost', Community='public') @@ -88,16 +88,16 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) vals = sess.get(vars) - print "v1 sess.get result: ", vals, "\n" + print(("v1 sess.get result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) vals = sess.getnext(vars) - print "v1 sess.getnext result: ", vals, "\n" + print(("v1 sess.getnext result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -106,28 +106,28 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v1 sess.getbulk result: ", vals, "\n" + print(("v1 sess.getbulk result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v1 set2-------------------------------------\n" + print ("---v1 set2-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation', '0', 'my newer location')) res = sess.set(vars) - print "v1 sess.set result: ", res, "\n" + print(("v1 sess.set result: ", res, "\n")) - print "---v1 walk3-------------------------------------\n" + print ("---v1 walk3-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v1 sess.walk result: ", vals, "\n" + print(("v1 sess.walk result: ", vals, "\n")) for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print((" ",var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v2c get-------------------------------------\n" + print ("---v2c get-------------------------------------\n") sess = netsnmp.Session(Version=2, DestHost='localhost', @@ -140,22 +140,22 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) vals = sess.get(vars) - print "v2 sess.get result: ", vals, "\n" + print(("v2 sess.get result: ", vals, "\n")) - print "---v2c getnext-------------------------------------\n" + print ("---v2c getnext-------------------------------------\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") vals = sess.getnext(vars) - print "v2 sess.getnext result: ", vals, "\n" + print(("v2 sess.getnext result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") - print "---v2c getbulk-------------------------------------\n" + print ("---v2c getbulk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -164,30 +164,30 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v2 sess.getbulk result: ", vals, "\n" + print(("v2 sess.getbulk result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") - print "---v2c set-------------------------------------\n" + print ("---v2c set-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation','0','my even newer location')) res = sess.set(vars) - print "v2 sess.set result: ", res, "\n" + print(("v2 sess.set result: ", res, "\n")) - print "---v2c walk-------------------------------------\n" + print ("---v2c walk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v2 sess.walk result: ", vals, "\n" + print(("v2 sess.walk result: ", vals, "\n")) for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print((" ",var.tag, var.iid, "=", var.val, '(',var.type,')')) - print "---v3 setup-------------------------------------\n" + print ("---v3 setup-------------------------------------\n") sess = netsnmp.Session(Version=3, DestHost='localhost', SecLevel='authPriv', @@ -200,22 +200,22 @@ class BasicTests(unittest.TestCase): vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime', 0), netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) - print "---v3 get-------------------------------------\n" + print ("---v3 get-------------------------------------\n") vals = sess.get(vars) - print "v3 sess.get result: ", vals, "\n" + print(("v3 sess.get result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") - print "---v3 getnext-------------------------------------\n" + print ("---v3 getnext-------------------------------------\n") vals = sess.getnext(vars) - print "v3 sess.getnext result: ", vals, "\n" + print(("v3 sess.getnext result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -224,37 +224,37 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v3 sess.getbulk result: ", vals, "\n" + print(("v3 sess.getbulk result: ", vals, "\n")) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") - print "---v3 set-------------------------------------\n" + print ("---v3 set-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation','0', 'my final destination')) res = sess.set(vars) - print "v3 sess.set result: ", res, "\n" + print(("v3 sess.set result: ", res, "\n")) - print "---v3 walk-------------------------------------\n" + print ("---v3 walk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v3 sess.walk result: ", vals, "\n" + print(("v3 sess.walk result: ", vals, "\n")) for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print((" ",var.tag, var.iid, "=", var.val, '(',var.type,')')) class SetTests(unittest.TestCase): def testFuncs(self): - print "\n-------------- SET Test Start ----------------------------\n" + print ("\n-------------- SET Test Start ----------------------------\n") var = netsnmp.Varbind('sysUpTime','0') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "uptime = ", res[0] + print(("uptime = ", res[0])) var = netsnmp.Varbind('versionRestartAgent','0', 1) @@ -264,19 +264,19 @@ class SetTests(unittest.TestCase): var = netsnmp.Varbind('sysUpTime','0') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "uptime = ", res[0] + print(("uptime = ", res[0])) var = netsnmp.Varbind('nsCacheEntry') res = netsnmp.snmpgetnext(var, Version = 1, DestHost='localhost', Community='public') - print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print(("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')')) var.val = 65 res = netsnmp.snmpset(var, Version = 1, DestHost='localhost', Community='public') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print(("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')')) sess = netsnmp.Session(Version = 1, DestHost='localhost', Community='public') @@ -286,7 +286,7 @@ class SetTests(unittest.TestCase): netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 4)) res = sess.set(vars) - print "res = ", res + print(("res = ", res)) vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'), netsnmp.Varbind('snmpTargetAddrTAddress'), @@ -295,14 +295,14 @@ class SetTests(unittest.TestCase): res = sess.getnext(vars) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") vars = netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 6)) res = sess.set(vars) - print "res = ", res + print(("res = ", res)) vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'), netsnmp.Varbind('snmpTargetAddrTAddress'), @@ -311,10 +311,10 @@ class SetTests(unittest.TestCase): res = sess.getnext(vars) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print((var.tag, var.iid, "=", var.val, '(',var.type,')')) + print ("\n") - print "\n-------------- SET Test End ----------------------------\n" + print ("\n-------------- SET Test End ----------------------------\n") if __name__=='__main__': diff -urNp net-snmp-5.7.3/python/setup.py pnew/python/setup.py --- net-snmp-5.7.3/python/setup.py 2014-12-08 21:23:22.000000000 +0100 +++ pnew/python/setup.py 2018-05-02 10:12:12.499567600 +0200 @@ -9,9 +9,9 @@ intree=0 args = sys.argv[:] for arg in args: - if string.find(arg,'--basedir=') == 0: - basedir = string.split(arg,'=')[1] - sys.argv.remove(arg) + if arg.find('--basedir=') == 0: + basedir = arg.split('=')[1] + sys.argv.remove(arg) intree=1 if intree: