等待Plink -batch命令完成

时间:2018-07-09 23:41:19

标签: python batch-file plink

我有一个Python脚本(在Windows框上),该脚本在同一Windows框上调用.bat文件。现在我正在使用subprocess.check_call(Python 3.5)

该.bat文件使用pLink调用Linux操作系统。

pLink使用SSH和-batch命令堆栈,从而导致执行Shell脚本

我需要一种等待外壳脚本完成的方法。

我曾尝试在plink cmds,-N,不同的Python方法(popen,call,check_call,在输出文件名上为true等)上进行睡眠,但是没有成功。现在,由于脚本仍在运行,它完成了整个过程,并以0卷上载了预期的输出文件。

任何帮助将不胜感激,我已经在此上花费了太多时间。

1 个答案:

答案 0 :(得分:0)

成功。 Linux机器上的shell脚本使用专有的Java执行器JAR文件来执行作业。该执行程序有一个选项-w wait。一旦我实现一切正常。

以下是FME ETL工具内部代码流的摘要

Python

import fme
import fmeobjects
import subprocess
from subprocess import Popen, PIPE, check_call
import os
import time

def dosomething(feature):
    try:
        subprocess.check_call("X:\\scripts\\gis\\Geocode\\gc\\exec_gc " + feature.getAttribute('INPUT_FILE_NM') + " " + feature.getAttribute('OUTPUT_FILE_NM'), shell=True, stdin=open(os.devnull) )
    except subprocess.CalledProcessError:
        raise fmeobjects.FMEException('Geocoder Error')

BAT文件:

plink -ssh userid@linuxbox -pw secret -batch "sudo su - specialuserid; cd ../../opt/dir2/scripts; ./Dynamic_GC_Job.ksh %1 %2; exit"