我有一个python脚本,它将shell命令作为输入(command
),然后使用]调用相同的脚本>
subprocess.Popen(command, shell=True)
这很好。但是,我意识到选项
shell=True
导致命令行注入漏洞。因此,我想将代码更改为shell=False
。我写了类似的东西:
import subprocess import shlex def parse_command(command): parsed_command = shlex.split(command) # Some more parsing return parsed_command command = raw_input("Enter the command: ") parsed_command = parse_command(command) subprocess.Popen(parsed_command) # By default shell=False
但是,我的
parse_command
不足以进行重定向(>,>>,2>&1等)或管道(|)。例如,如果我直接在终端中键入命令,则会看到以下结果:
〜#echo“ hi”> output.txt
〜#cat output.txt
hi
但是,我的python脚本给出了错误的结果:
〜#python my_parser.py
[输入命令:
echo“ hi”> output.txthi> output.txt
因此,谁能建议我一个可以用作解析器的Python库,以便使用
shell=False
将shell命令转换为子进程popen命令。
谢谢。
我有一个python脚本,它将shell命令作为输入(命令),然后使用subprocess.Popen(command,shell = True)调用它。但是,我意识到选项shell = ...
我认为,如果在单独的bash脚本中传递命令并通过subprocess模块运行该bash脚本会更好。可执行的bash脚本可以是这样的: