我想从我的Python脚本调用各种程序,比如二进制程序,还有其他perl / python / ruby脚本,如wget,sqlmap和自定义脚本。
问题在于我希望用户能够更改底层程序的参数。我们以wget为例。假设我正在调用此程序(请注意,所有三个参数都动态输入到命令中):
wget www.google.com --user=user --password=pass
但我也希望用户在wget命令中添加自定义参数。我想最好的方法是直接从一个文件,但我想知道是否存在这样的东西,所以我不会手工重新编程。
另外请记住,这不仅仅是一个程序,但最多可能有100个程序,可能更多。它需要是可扩展的,并且不会太复杂,用户无法更改。
由于
答案 0 :(得分:0)
使用subprocess.check_output
program = 'wget'
default_args = ['www.google.com']
user_args = []
subprocess.check_output(program + default_args + user_args)
请小心谨慎,在允许任何用户向命令添加参数之前进行所有安全检查。
在将用户提供的参数添加到子进程调用
之前,您可能还需要shlex.split来拆分它们如果你想在外部文件中使用默认值,你可以这样做:
with open('wget_defaults.txt') as i:
default_args = i.read().split(',')
希望有所帮助