Как выполнить несколько команд CLI в скрипте Python?

Я использую CLI TeamForge для создания артефактов в разделе трекера дефектов. Файл / исполняемый файл CLI называется "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 что два шага в одном

2 ответа

Решение

Вы можете попытаться процитировать свои аргументы в ctf; просто посмотрите на это:

>>> os.system("echo hi; echo again;")
hi
again

против:

>>> os.system("echo 'hi; echo again;'")
hi; echo again;

Точка с запятой завершает команду в оболочке. Если ваши аргументы содержат точки с запятой, вы должны заключить их в кавычки, чтобы они не ломали ваш список аргументов.

Тем не менее, в соответствии с рекомендациями CTF, их способ обработки такой ситуации с несколькими командами, кажется, заключает их в сценарий и выполняет с помощью:

./ctf script.txt

Чтобы передать информацию в вашу программу на стандартный ввод, либо используйте

В качестве альтернативы ваша программа может иметь некоторый "режим пакетной обработки", который позволил бы вам предоставлять набор команд в командной строке или в файле, но, глядя на справочную страницу CTFCLI, это маловероятно.

Другие вопросы по тегам