[Tutor] Confirmation if command worked
Christian Witts
cwitts at compuscan.co.za
Thu Aug 25 08:25:16 CEST 2011
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/ad901226/attachment.html>
More information about the Tutor
mailing list