Как безопасно, запустить программу через терминал? Python3

Как безопасно, запустить программу через терминал? Пробовал:

import subprocess, os
filename="какойтофайл"
subprocess.run("gpg -c"+"'"+filename+"'" shell=True, check=True);
os.system("gpg -c"+"'"+filename+"'");

Всё время ругается "синтаксический анализатор" Bandit. Говорит что в команде subprocess.run и os.system есть шел (shell) уязвимость. Как, именно, это устранить? Без этого не как нельзя выпускать продукт.


Ответы (1 шт):

Автор решения: Xander

Ну, я с bandit не работал, но из общих соображений могу предположить, что он агрится на то, что вы строчку команды собираете простой конкатенацией (что действительно часто оказывается плохой идеей).

Вместо этого лучше использовать синтаксис передачи аргументов команды отдельными элементами списка:

subprocess.run(["gpg", "-c", filename], shell=True, check=True)

PS: И не надо в питоне пихать точки с запятой после каждой строки.

→ Ссылка