如何将python中的system()转换为子进程调用以执行ssh命令?

时间:2016-04-19 15:49:48

标签: python subprocess

我知道这是一个非常愚蠢的问题,但是我很难绕过我的头来将这个system()命令转换为等效的子进程调用来执行ssh命令。我目前的system()电话是:

cmd_txt = "ssh -i pem_file.pem user1@" + host_ip + " ' cd /folder1/folder2 && java -cp jar_filw.jar -a arg1 -t arg2 -e arg3 -f /folder1/folder2/folder3/file1_" + suffix + ".txt'"

我在cdjava -cp部分遇到困难。任何人都可以显示执行此命令的等效子进程调用吗?

注意host_ipsuffix是变量。

2 个答案:

答案 0 :(得分:0)

使用“subprocess.Popen”

cmd_txt = "ssh -i pem_file.pem user1@" + host_ip + " ' cd /folder1/folder2 && java -cp jar_filw.jar -a arg1 -t arg2 -e arg3 -f /folder1/folder2/folder3/file1_" + suffix + ".txt'"

p = subprocess.Popen(cmd_txt, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)

壳=真 意味着文本就像写入命令提示符

然后你可以用PIPEs与子进程通信

output = p.communicate()[0]

或者命令可以作为字符串列表提供

p = subprocess.Popen(["cmd", "arg1", "arg2"])

了解更多信息,请参阅文档 https://docs.python.org/3/library/subprocess.html

答案 1 :(得分:0)

与subprocess.Popen类似:

subprocess.call(cmd_txt, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)

也可以使用