我知道这是一个非常愚蠢的问题,但是我很难绕过我的头来将这个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'"
我在cd
和java -cp
部分遇到困难。任何人都可以显示执行此命令的等效子进程调用吗?
注意:host_ip
和suffix
是变量。
答案 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)
也可以使用