Search code examples
python-2.7sleeptelnetqnx

Determining wait time while executing a binary on QNX prompt using telnet


I am processing certain output binary files using sloginfo on QNX, I have used ftp/telnet/vmware to get to a point where I upload the binary from my machine to the vmware instance and then run the sloginfo command. The issue is that binary files which need to be processed are of inconsistent size (ranging from 50mb to 200mb), and the time needed to process each of these files is different, thus making it impossible to determine the wait/sleep time required.

I need to know if sloginfo returns a value which can be used as a flag. I tried using tn.read_until(), without getting desired results.

#
import os, sys, telnetlib, time
from ftplib import FTP

def upload(ftp, filed):
      ext = os.path.splitext(filed)[1]
      if ext in (".txt", ".htm", ".html"):
               ftp.storlines("STOR " + filed, open(filed))
      else:
               ftp.storbinary("STOR " + filed, open(filed, "rb"), 1024)

def gettext(ftp, filename, outfile=None):
  # fetch a text file
  if outfile is None:
      outfile = sys.stdout
  # use a lambda to add newlines to the lines read from the server
  ftp.retrlines("RETR " + filename, lambda s, w=outfile.write: w(s+"\n"))

if __name__ == '__main__':
dbfile = "LOG1"

nonpassive = False
remotesite = '192.168.0.128'
ftp_port = '21'
tel_port = '23'
password = 'root'

ftp = FTP()
ftp.connect(remotesite, ftp_port)

ftp.login('root','root')

print 'Uploading the Log file... Please wait...'
upload (ftp, dbfile)
print 'File Uploaded Successfully...'

tn = telnetlib.Telnet(remotesite, tel_port)

tn.read_until("login: ")

tn.write('root' + "\n")
if password:
    tn.write(password + "\n")

tn.write("sloginfo LOG1 >> LOG1.txt\n")

**#need to get more control on this sleep time**
time.sleep(300)
print 'Downloading text file...'
gettext(ftp, "LOG1.txt", open(r'LOG1.txt','wb'))


ftp.close()
tn.close()

Solution

  • tn.write("sloginfo LOG1 >> LOG1.txt\n") modified the above comment with tn.write ('sloginfo '+ strdbfile + '>> ' + strdbfiletxt+ '; echo Done!\n') and this has resolved the issue