Python Forum
Output not printing when execute scripts in threads
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Output not printing when execute scripts in threads
#1
#!/usr/bin/python
import threading
import sys
import os
import unidecode
import telnetlib
import time
import re
import datetime
from time import sleep
start = time.time()
user = 'eciecidslam'
password = 'Hi-FOCuS'
today = datetime.date.today()
start = time.time()
ecienvfile = open('ecienvstatus.txt','w')
def open_telnet(host):
             timeout = 120
             try:
                 session = telnetlib.Telnet(host, 23, timeout)
                 #session.set_debuglevel(2)
                 time.sleep(1)
                 session.read_until(b"Login :")
                 session.write((user+"\r").encode('ascii'))
                 time.sleep(2)
                 session.read_until(b"Password :",2)
                 session.write((password + "\r").encode('ascii'))
                 time.sleep(2)
                 session.read_until(b"MCR64A >")
                 session.write("fan_status".encode('ascii') + b"\r")
                 fan_output = session.read_until("MCR64A >".encode('ascii'), timeout )
                 session.write("temp_readings".encode('ascii') + b"\r")
                 temp_output = session.read_until("MCR64A >".encode('ascii'), timeout )
                 session.write =("logout" +b"\r")
                 session.close()
                 for line in fan_output.decode('utf-8').split('\n')[1:]:
                     if 'Fans' in line:
                             #print(line)
                         new_status = line.split(':')[1]
                         if 'NORMAL' in new_status:
                             status = 'Normal'
                         if 'fail' in new_status:
                             status = 'Fan_Fail'
                 for temp_status in temp_output.decode('utf-8').split('\n')[4:]:
                         tem_status = re.sub('\s{2,}', ' ', temp_status)
                         Dirty,Temperature,Sensation = tem_status.split('|')[3],tem_status.split('|')[4],tem_status.split('|')[5]
                         print('{}\t {}\t {}\t {}\t {}'.format(host,status,Dirty,Temperature,Sensation))
                         ecienvfile.write('{} {} {} {} {}\n'.format(host,status,Dirty,Temperature,Sensation))
                         sr_no +=1
             except Exception as excp:
                 pass
def create_threads():
    threads = []
    with open('ecienv.txt','r') as ipfile:
        for sr_no, line in enumerate(ipfile, start=1):
            host = line.strip()
            th = threading.Thread(target = open_telnet ,args = (host,))
            th.start()
            threads.append(th)
        for thr in threads:
            thr.join()

if __name__ == "__main__":
        create_threads()
        print ("Exiting the program")
        #outfile.close()
        ecienvfile.close()
        print('It took', time.time()-start, 'seconds.')
where as without threading, shows output

#!/usr/bin/python
import threading
import sys
import os
import unidecode
import telnetlib
import time
import re
import datetime
from time import sleep
start = time.time()
user = 'eciecidslam'
password = 'Hi-FOCuS'
today = datetime.date.today()
start = time.time()
ecienvfile = open('ecienvstatus.txt','w')
#def open_telnet(host):
timeout = 120
with open('ecienv.txt','r') as ipfile:
        for sr_no, line in enumerate(ipfile, start=1):
            host = line.strip()
            #print(host)
            try:
               #print(host)
               session = telnetlib.Telnet(host, 23, timeout)
               #session.set_debuglevel(2)
               time.sleep(1)
               session.read_until(b"Login :")
               session.write((user+"\r").encode('ascii'))
               time.sleep(2)
               session.read_until(b"Password :",2)
               session.write((password + "\r").encode('ascii'))
               time.sleep(2)
               session.read_until(b"MCR64A >")
               session.write("fan_status".encode('ascii') + b"\r")
               fan_output = session.read_until("MCR64A >".encode('ascii'), timeout )
               session.write("temp_readings".encode('ascii') + b"\r")
               temp_output = session.read_until("MCR64A >".encode('ascii'), timeout )
               session.write =("logout" +b"\r")
               session.close()
               for line in fan_output.decode('utf-8').split('\n')[1:]:
                   if 'Fans' in line:
             #print(line)
                       new_status = line.split(':')[1]
                   if 'NORMAL' in new_status:
                       status = 'Normal'
                   if 'fail' in new_status:
                       status = 'Fan_Fail'
                   if 'not' in new_status:
                       status = 'No_Fan'
                        #print(status)
               for temp_status in temp_output.decode('utf-8').split('\n')[4:]:
                   tem_status = re.sub('\s{2,}', ' ', temp_status)
                   Dirty,Temperature,Sensation = tem_status.split('|')[3],tem_status.split('|')[4],tem_status.split('|')[5]
                   print('{}\t {}\t {}\t {}\t {}'.format(host,status,Dirty,Temperature,Sensation))
                 #ecienvfile.write('{} {} {} {} {}\n'.format(host,status,Dirty,Temperature,Sensation))
                   sr_no +=1
            except Exception as excp:
                pass
Reply
#2
Compare your indentation in both. if 'Fans' is not in line then status and new_status are never updated.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Printing output without print usage susmith552 1 1,625 Feb-07-2020, 07:52 PM
Last Post: Clunk_Head
  How do I stop this fast factorization program from printing beyond the 3rd output? Pleiades 6 3,777 Dec-07-2019, 08:43 PM
Last Post: Pleiades
  Sharing memory across threads / scripts Radek 1 2,347 Oct-31-2019, 07:53 PM
Last Post: Radek
  ciscolib cdp output list printing support anna 3 3,283 Jul-25-2018, 12:18 PM
Last Post: buran
  Python on Windows 2012RC2 (with VS Code 1.22.2). Scripts not generating output. JGFMK 2 3,166 Apr-24-2018, 08:17 PM
Last Post: JGFMK
  easysnmp output printing help anna 0 2,774 Apr-03-2018, 09:19 AM
Last Post: anna
  Paramiko output printing issue anna 3 15,951 Feb-06-2018, 08:34 AM
Last Post: anna
  telnet unexpected output printing anna 3 3,537 Jan-17-2018, 01:16 PM
Last Post: anna
  Screen printing on different threads MuntyScruntfundle 1 2,393 Dec-10-2017, 03:46 PM
Last Post: hshivaraj
  Printing the output in columns pythonbabe 3 4,359 Nov-23-2017, 09:01 AM
Last Post: heiner55

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020