Python 2.7 ';执行命令';关键字未在远程计算机上完成执行

Python 2.7 ';执行命令';关键字未在远程计算机上完成执行,python-2.7,ssh,robotframework,Python 2.7,Ssh,Robotframework,我正在尝试使用SSH库的'executecommand'关键字在远程机器上运行命令(Jar文件执行)。但即使在命令执行完成之前,控件也会返回。是否有办法等待命令执行 以下是编写的关键字: 运行作业 [参数]${machine\u ip}${username}${password}${file\u location}${KE\u ID} 打开连接${machine\u ip}超时=60 登录${username}${password} ${run\u jar\u file}=Set变量java-j

我正在尝试使用SSH库的'executecommand'关键字在远程机器上运行命令(Jar文件执行)。但即使在命令执行完成之前,控件也会返回。是否有办法等待命令执行

以下是编写的关键字:

运行作业
[参数]${machine\u ip}${username}${password}${file\u location}${KE\u ID}
打开连接${machine\u ip}超时=60
登录${username}${password}
${run\u jar\u file}=Set变量java-jar-Dspring.profiles.active=dev${file\u location}Ids=${KE\u ID}
${output}=执行命令${run\u jar\u file}
日志${output}
睡30

关闭连接

使用读写,而不是使用“执行命令”,这样您就可以指定命令执行的超时时间


请参阅:

您明确要求在后台运行该命令(通过在要运行的命令中添加
&
作为最后一个字符),因此ssh库无法知道您正在运行的程序何时退出。如果要等待它完成,请不要在后台运行它


换句话说,从正在运行的命令中删除尾随的
&

如果有人仍在使用此命令,我已经找到了解决方案

Open Connection    ${SSH_HOST}    timeout=10s
Login    login    pass
Write    your_command
Set Client Configuration    prompt=$    
${output}=    Read Until Prompt 
Should End With     ${output}    ~ $

我确实试过先不带“&”。但执行不会完成。因此,我添加它是为了检查即使与计算机的连接已关闭,它是否也会在后台运行。@DeeptiK:您不能同时使用这两种方式--您不能在后台运行它并等待它完成。我已编辑了代码。我在没有“nohup”和“&”的情况下运行了它。我现在看到日志了。但不是完整的。因此表明执行没有完成。并且连接在完成之前就已关闭。“Write”关键字没有超时。关键字“写入直到预期输出”包含它。但这不是我需要的。我只想运行它一次,然后等待执行完成。此处的输出将是一个日志跟踪。当导入SSHLibrary pass参数作为超时时。“图书馆SSHLibrary 10秒”