[Errno 9] Bad File Descriptor on Windows 2003 Server & Py 2.4.1

rbt rbt at athop1.ath.vt.edu
Tue May 3 08:59:14 EDT 2005


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<XXXXXXXXX at vt.edu>"
     t = "Somebody_Else at vt.edu"

     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()



More information about the Python-list mailing list