snmpfwd
snmpfwd copied to clipboard
Running snmpfwd-server in Windows
Hi
I'm trying to run snmpfwd-server in Windows but when I execute it in a console window nothing happens. No matter what parameters I put, it does not do anything (except the version and help parameters that do work) .
I'm using the example SNMPv3 to SNMPv1 proxy server configuration file. This file is located in the directory "c:\tmp". In the next example, I run the command three times. The first time to check the script printing the version. The second and third time, passing the configuration file with a relative path or with an absolute path.
C:\tmp>snmpfwd-server.py --version
SNMP Proxy Forwarder version 0.4.4, written by Ilya Etingof [email protected]
Using foundation libraries: pysnmp 4.4.9, pyasn1 0.4.5.
Python interpreter: 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]
Software documentation and support at http://snmplabs.com/snmpfwd/
Usage: C:\Program Files\Python37\Scripts\snmpfwd-server.py [--help]
[--version ]
[--debug-snmp=<io|dsp|msgproc|secmod|mibbuild|mibinstrum|acl|proxy|app|all>]
[--debug-asn1=<none|encoder|decoder|all>]
[--daemonize]
[--process-user=
C:\tmp> C:\tmp> C:\tmp>snmpfwd-server.py --config-file=server.conf
C:\tmp> C:\tmp>snmpfwd-server.py --config-file=c:\tmp\server.conf
C:\tmp>
Also I have tried to put the parameters logging-method, log-level and debug-snmp but nothing has worked. Maybe it is a problem of windows permissions, but at this moment I have run out of ideas. My operating system is Windows 10 and my user is an administrator of the machine.
I would appreciate any help. Best regards,
Jorge
I personally do not have much experience with Windows logging.
Let's may be start with something simple e.g. --logging-method=file:snmpfwd.log
? Though the default is stderr
, may be also try --logging-method=stdout
? It may also have something to do with user permissions.. Sorry, I do not have anything more specific to offer off the top of my head.
If you could debug that any further to come up with a fix, that would be useful! The code to start with is perhaps here.
Thank very much. I have debugged the code and the problem is in the function PrivilegesOf. The debugger says: AttributeError: module 'snmpfwd.daemon' has no attribute 'PrivilegesOf' I have seen in the daemon.py file that PrivilegesOf is not defined for Windows:
if sys.platform[:3] == 'win': def daemonize(pidfile): raise error.SnmpfwdError('Windows is not inhabited with daemons!') def dropPrivileges(uname, gname): return else:
Is it correct? Maybe I have an old version of daemon.py. I have to tell you that I am a beginner with Python.
In any case, I have defined the class PrivilegesOf inside the 'if sys.platform[:3] == 'win':' and, it works now.
Thank you Best regards,
Jorge
I ran into the same issue as Jorge. His solution worked for me. I wish I noticed that it was in the daemon.py script file as I was looking in the wrong place. I am new to Python as well so I'm not sure if I fixed it in the cleanest way.
I am running snmpfwd version 0.4.4 with Python 3.8 on Windows 10 for testing.
For those attempting the same (with a pip installation), the file is located here: <python_dir>\Lib\site-packages\snmpfwd\daemon.py
Original Code Block:
if sys.platform[:3] == 'win':
def daemonize(pidfile):
raise error.SnmpfwdError('Windows is not inhabited with daemons!')
def dropPrivileges(uname, gname):
return
else:
import os
# original code continues...
Work around code changes:
if sys.platform[:3] == 'win':
def daemonize(pidfile):
raise error.SnmpfwdError('Windows is not inhabited with daemons!')
def dropPrivileges(uname, gname):
return
class PrivilegesOf(object):
def __init__(self, uname, gname, final=False):
return
def __enter__(self):
return
def __exit__(self, *args):
return
else:
import os
# original code continues...
Hopefully a correction can be added to the source code (by someone more familiar with Python than me).
Thank very much. I have debugged the code and the problem is in the function PrivilegesOf. The debugger says: AttributeError: module 'snmpfwd.daemon' has no attribute 'PrivilegesOf' I have seen in the daemon.py file that PrivilegesOf is not defined for Windows:
if sys.platform[:3] == 'win': def daemonize(pidfile): raise error.SnmpfwdError('Windows is not inhabited with daemons!') def dropPrivileges(uname, gname): return else:
Is it correct? Maybe I have an old version of daemon.py. I have to tell you that I am a beginner with Python.
In any case, I have defined the class PrivilegesOf inside the 'if sys.platform[:3] == 'win':' and, it works now.
Thank you Best regards,
Jorge
Helped