0

重複の可能性:
Pythonで外部コマンドを呼び出す

バイナリプログラムのようなPythonスクリプトからさまざまなプログラムを呼び出したいだけでなく、wget、sqlmap、カスタムスクリプトなどの他のperl / python/rubyスクリプトも呼び出したいと思います。

問題は、ユーザーが基になるプログラムのパラメーターを変更できるようにしたいということです。wgetを例にとってみましょう。このプログラムを呼び出しているとしましょう(3つのパラメーターすべてがコマンドに動的に入力されることに注意してください)。

wget www.google.com --user=user --password=pass

しかし、ユーザーがwgetコマンドにカスタムパラメーターを追加することも望んでいます。ファイルから直接行うのが最善の方法だと思いますが、すべてを手作業で再プログラムしないように、このようなものが存在するのではないかと考えていました。

また、これは1つのプログラムだけでなく、最大100のプログラム、場合によってはそれ以上になる可能性があることにも注意してください。これは拡張可能であり、ユーザーが変更できるほど複雑ではない必要があります。

ありがとう

4

1 に答える 1

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(',')

それが役に立てば幸い

于 2013-01-18T18:20:43.330 に答える