[Tutor] Confirmation if command worked
Johan Geldenhuys
johan at accesstel.com.au
Thu Aug 25 08:50:27 CEST 2011
Hi Christian,
Thanks for that. I'll give it a shot and see if I can catch the error.
Lekker dag
Johan
From: Christian Witts [mailto:cwitts at compuscan.co.za]
Sent: Thursday, 25 August 2011 4:25 PM
To: Johan Geldenhuys
Cc: tutor at python.org
Subject: Re: [Tutor] Confirmation if command worked
On 2011/08/25 07:51 AM, Johan Geldenhuys wrote:
Hi all,
I have the following code that uses pexpect to execute a system command. My
problem is, I don't know how to identify if the command was successfully
executed.
The code works as it is to execute the SCP command, but it executes
regardless if the SCP session can actually connect to something.
Thanks
def doScp(files):
logger.log("Files to get: " + `files`)
fNames = ' '.join(files)
cmd = 'scp %s %s@%s:%s%s' % (fNames,
SCP_USERNAME,
SCP_HOST,
SCP_IMG_FILE_DIR,
SCP_IMG_FILE_PATH)
logger.log("Sending: " + cmd)
child = pexpect.spawn(cmd)
i = child.expect(['assword:', 'yes/no'], timeout=30)
if i == 0:
child.sendline(SCP_PASSWD)
elif i == 1:
child.sendline("yes")
child.expect("assword:", timeout=30)
child.sendline(SCP_PASSWD)
data = child.read()
if data != None:
success = True
else:
success = False
child.close()
logger.log("Files sent to SCP host")
return success
_______________________________________________
Tutor maillist - Tutor at python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
Once you call child.close() the exit and signal status will be stored in
.exitstatus and .signalstatus, for a normal exit of the program .exitstatus
will store the return code from SCP as per [1] [2] [3] and .signalstatus
will be None. If SCP was terminated with a signal then .exitstatus will be
None and .signalstatus will contain the signal value. Info found in the
docs [4].
So the changes to your code will be:
<snip>
data = child.read()
child.close()
if child.exitstatus and child.exitstatus == 0:
success = True
else:
success = False
<snip>
I'll leave putting in handling of failed error codes and abnormal
termination to you.
[1] http://support.attachmate.com/techdocs/2116.html
[2] http://support.attachmate.com/techdocs/2487.html
[3] http://support.attachmate.com/techdocs/2285.html
[4] http://pexpect.sourceforge.net/pexpect.html
--
Christian Witts
Python Developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110825/8c12287c/attachment-0001.html>
More information about the Tutor
mailing list