如何在 python 脚本中执行多个 CLI 命令?
How to execute multiple CLI commands in a python script?
我正在使用 TeamForge 的 CLI 在缺陷跟踪器部分创建工件。 CLI file/executable 称为 "ctf",没有扩展名。我想使用 python 脚本来创建工件,但最多只能执行一个命令。我想一次创建一个错误。这是我目前的代码:
import os
os.system("./ctf go tracker1234; # going to Defects section
create; # creating an artifact
set title This Is A Title; # setting artifact's fields
set description desc123;
set Product [Product 23];
set build_number Not known;
set Severity Catastrophic;
set steps_to_reproduce 1st comment;
set Component [component 4];
set Version [version 19];
commit) # saving the artifact on TeamForge
这是我不断收到的错误:
sh: 1: create: not found
sh: 1: commit: not found
所以我认为这些命令没有按顺序或我指定的顺序执行。这意味着每个命令都是单独执行的。有什么建议可以按照我指定的顺序获取这些命令 运行 吗?
如果需要进一步解释,请告诉我。
更新
我刚刚发现您可以这样做:go tracker1234 create
两步合二为一
你可以尝试将你的论点引用给ctf;看看这个:
>>> os.system("echo hi; echo again;")
hi
again
对比:
>>> os.system("echo 'hi; echo again;'")
hi; echo again;
分号终止 shell 中的命令。如果您的参数包含分号,您必须将它们引用起来,以免它们破坏您的参数列表。
然而,根据 CTF guidelines,他们处理这种多命令情况的方法似乎是将它们放入脚本并执行:
./ctf script.txt
要在标准输入上向您的程序传递信息,要么使用
- 您的 shell 的设施,例如 here-document or pipeline,在您指定的命令行中,或
- Python的设施,例如根据 How to launch and pass input to an external program
或者,您的程序可能有一些 "batch processing mode" 允许您在命令行或文件中提供您的命令集,但是,查看 CTFCLI manual page,这不会好像不太可能。
我正在使用 TeamForge 的 CLI 在缺陷跟踪器部分创建工件。 CLI file/executable 称为 "ctf",没有扩展名。我想使用 python 脚本来创建工件,但最多只能执行一个命令。我想一次创建一个错误。这是我目前的代码:
import os
os.system("./ctf go tracker1234; # going to Defects section
create; # creating an artifact
set title This Is A Title; # setting artifact's fields
set description desc123;
set Product [Product 23];
set build_number Not known;
set Severity Catastrophic;
set steps_to_reproduce 1st comment;
set Component [component 4];
set Version [version 19];
commit) # saving the artifact on TeamForge
这是我不断收到的错误:
sh: 1: create: not found
sh: 1: commit: not found
所以我认为这些命令没有按顺序或我指定的顺序执行。这意味着每个命令都是单独执行的。有什么建议可以按照我指定的顺序获取这些命令 运行 吗?
如果需要进一步解释,请告诉我。
更新
我刚刚发现您可以这样做:go tracker1234 create
两步合二为一
你可以尝试将你的论点引用给ctf;看看这个:
>>> os.system("echo hi; echo again;")
hi
again
对比:
>>> os.system("echo 'hi; echo again;'")
hi; echo again;
分号终止 shell 中的命令。如果您的参数包含分号,您必须将它们引用起来,以免它们破坏您的参数列表。
然而,根据 CTF guidelines,他们处理这种多命令情况的方法似乎是将它们放入脚本并执行:
./ctf script.txt
要在标准输入上向您的程序传递信息,要么使用
- 您的 shell 的设施,例如 here-document or pipeline,在您指定的命令行中,或
- Python的设施,例如根据 How to launch and pass input to an external program
或者,您的程序可能有一些 "batch processing mode" 允许您在命令行或文件中提供您的命令集,但是,查看 CTFCLI manual page,这不会好像不太可能。