I'm writing a multithreaded program that initiates a dial backup connection
to check the B channels on ISDN BRI connections. I recently added logic to
check for offline devices (Operation timed out) and DNS errors (getaddrinfo
failed). When it encounters the exception, it doesn't appear to be exiting
(by way of the return command) the thread, hence the error.

The input file contains:

rtr3926
s0877ap01

Here is part of the program:
import os, os.path, random, re, socket, string, sys, telnetlib, threading,
time
from time import strftime
from threading import Thread

class ISDNTest(threading.Thread):
   def __init__(self, host):
       Thread.__init__(self)
       self.host = host
       try:
           self.tn = telnetlib.Telnet(self.host)
       except socket.error, err:
           if "Operation timed out" in err:
               print "1st if", self.host, err #progress checking
               dialTestResult[self.host] = ["", "connection timed out"]
               return
           elif "getaddrinfo failed" in err:
               print "2nd if", self.host, err #progress checking
               dialTestResult[self.host] = ["", "DNS resolution failed"]
               return
       self.status = []
       print self.tn #progress checking

   def run(self):
       connect_status = self.Logon()
...........(much more program not pasted here)

for entry in inFile:
   if entry == '\n':
       continue
   elif "#" in entry:
       continue
   entry = entry.replace("\n", "")
   while count_active() >= Max_Threads:
       time.sleep(1)
   threads = ISDNTest(entry)
   tlist.append(threads)
   threads.start()

for thread in tlist:
   thread.join()


Here is there error:
pythonw -u "new.isdn.test.py"
<telnetlib.Telnet instance at 0x00B21670>
log me on rtr3926 (progress checking message, this isn't an error)
1st if s0877ap01 (10060, 'Operation timed out') (progress checking message;
this indicates an exception occurred)
log me on s0877ap01 (progress checking message, this isn't an error)
Exception in thread Thread-2:
Traceback (most recent call last):
 File "c:\python25\lib\threading.py", line 460, in __bootstrap
   self.run()
 File "new.isdn.test.py", line 35, in run
   connect_status = self.Logon()
 File "new.isdn.test.py", line 59, in Logon
   self.tn.read_until("Username:", 7)
AttributeError: 'ISDNTest' object has no attribute 'tn'

Exit code: 0
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to