"rbt" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED] | 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)
Without looking at the rest of script: Try using either escaped backslashes as in: a = os.stat('C:\\WINDOWS\\System32\\config\\%s' %log) or a raw string (as long as it doesn't end with a single backslash) as in: a = os.stat(r'C:\WINDOWS\System32\config\%s' %log) or simply use forward slashes as in: a = os.stat('C:/WINDOWS/System32/config/%s' %log) -- Vincent Wehren | 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