The below script produces a '[Errno 9] Bad File Descriptor' when executed. If I remove the try: except: statements, the script stops when the error occurs.
The purpose of the script is to monitor the size of the three main logs on a Windows 2003 server and send and email should any of the logs get shorter. It works fine... just don't know *why* it produces the '[Errno 9] Bad File Descriptor' error. I'm running Python 2.4.1 on Windows 2003 SP1 Server with no funky win32 extensions ;) logs = ['AppEvent.Evt', 'SecEvent.Evt', 'SysEvent.Evt'] app_size = 0 sec_size = 0 sys_size = 0 def send_email(LogName, old_size, new_size): f = "Somebody<[EMAIL PROTECTED]>" t = "[EMAIL PROTECTED]" msg = MIMEText("""old_size = %d, new_size = %d""" %(old_size, new_size)) msg["Subject"] = "%s Log Just Got Shorter" %LogName msg["Message-id"] = email.Utils.make_msgid() msg["From"] = f msg["To"] = t h = "smtp.vt.edu" s = smtplib.SMTP(h) s.sendmail(f, t, msg.as_string()) s.quit() while 1: for log in logs: try: a = os.stat('C:\WINDOWS\System32\config\%s' %log) cur_size = a[6] print log print "cur_size", cur_size if log == 'AppEvent.Evt': print "old_size", app_size, "\n" if cur_size >= app_size: app_size = cur_size time.sleep(6) continue else: send_email(log, app_size, cur_size) time.sleep(6) continue elif log == 'SecEvent.Evt': print "old_size", sec_size, "\n" if cur_size >= sec_size: sec_size = cur_size time.sleep(6) continue else: send_email(log, sec_size, cur_size) time.sleep(6) continue else: print "old_size", sys_size, "\n" if cur_size >= sys_size: sys_size = cur_size time.sleep(6) continue else: send_email(log, sys_size, cur_size) time.sleep(6) continue except Exception, e: fp7 = file('log_mon_exception.txt', 'a') print >> fp7, e fp7.close() -- http://mail.python.org/mailman/listinfo/python-list