N
NetKev
I added a function 'warn_Admin' and defined it just before another
function 'process_log'. 'process_log' calls this warn_Admin' function.
However, when it gets called i get the following error every time:
---
Traceback (most recent call last):
File "/usr/bin/denyhosts.py", line 202, in ?
first_time, noemail, daemon)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
86, in __init__
last_offset)
File "/usr/lib/python2.3/site-packages/DenyHosts/daemon.py", line 74,
in createDaemon
apply(func, args)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
137, in runDaemon
purge_time, purge_sleep_ratio)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
178, in daemonLoop
last_offset = self.process_log(logfile, last_offset)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
380, in process_log
[warn_Admin(ip) for ip in new_denied_hosts]
NameError: global name 'warn_Admin' is not defined
--
If I take the two functions out of their current environment and store
them in test file and run it, it doesn't complain. I'm new to python
so I'm guessing there is some weird scope rule I am missing. I did try
'self.warn_Admin(ip)' just to be safe but then I got a 'too many
arguments' error?
I'm lost
the added function plus the header of the existing function(its too
large):
------------
def warn_Admin(warn_ip):
SENDMAIL = "/usr/sbin/sendmail" # sendmail location
p = os.popen("%s -t" % SENDMAIL, "w")
p.write("To: (e-mail address removed)\n")
p.write("Subject: test from denyhosts\n")
p.write("\n") # blank line separating headers from body
p.write("Some text\n")
p.write(warn_ip)
sts = p.close()
if sts != 0:
info("Sendmail exit status: %s", sts)
return sts
def process_log(self, logfile, offset):
-------------
the call to warn_Admin from process_log:
---
if new_denied_hosts:
info("new denied hosts: %s", str(new_denied_hosts))
#[info(ip) for ip in new_denied_hosts]
[warn_Admin(ip) for ip in new_denied_hosts]
else:
debug("no new denied hosts")
-kevin
function 'process_log'. 'process_log' calls this warn_Admin' function.
However, when it gets called i get the following error every time:
---
Traceback (most recent call last):
File "/usr/bin/denyhosts.py", line 202, in ?
first_time, noemail, daemon)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
86, in __init__
last_offset)
File "/usr/lib/python2.3/site-packages/DenyHosts/daemon.py", line 74,
in createDaemon
apply(func, args)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
137, in runDaemon
purge_time, purge_sleep_ratio)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
178, in daemonLoop
last_offset = self.process_log(logfile, last_offset)
File "/usr/lib/python2.3/site-packages/DenyHosts/deny_hosts.py", line
380, in process_log
[warn_Admin(ip) for ip in new_denied_hosts]
NameError: global name 'warn_Admin' is not defined
--
If I take the two functions out of their current environment and store
them in test file and run it, it doesn't complain. I'm new to python
so I'm guessing there is some weird scope rule I am missing. I did try
'self.warn_Admin(ip)' just to be safe but then I got a 'too many
arguments' error?
I'm lost
the added function plus the header of the existing function(its too
large):
------------
def warn_Admin(warn_ip):
SENDMAIL = "/usr/sbin/sendmail" # sendmail location
p = os.popen("%s -t" % SENDMAIL, "w")
p.write("To: (e-mail address removed)\n")
p.write("Subject: test from denyhosts\n")
p.write("\n") # blank line separating headers from body
p.write("Some text\n")
p.write(warn_ip)
sts = p.close()
if sts != 0:
info("Sendmail exit status: %s", sts)
return sts
def process_log(self, logfile, offset):
-------------
the call to warn_Admin from process_log:
---
if new_denied_hosts:
info("new denied hosts: %s", str(new_denied_hosts))
#[info(ip) for ip in new_denied_hosts]
[warn_Admin(ip) for ip in new_denied_hosts]
else:
debug("no new denied hosts")
-kevin