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: [EMAIL PROTECTED]") 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 -- http://mail.python.org/mailman/listinfo/python-list