KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

subprocessによるコマンド操作

登録日 :2023/04/07 06:23
カテゴリ :Python基礎

subprocess関数によって、サーバでのコマンド操作ができる。

実装する時は、セキュリティに注意しよう。
オプションをつけない場合は、シェルインジェクションができてしまう。
例えば、'|' によって、rm -rf * などを入れられることにより簡単にシステムを破壊するコマンドを入れられてしまうリスクがあるため。

import subprocess
subprocess.run(['ls', '-al'])

コマンドにオプションをつけたいとき

p1 = subprocess.Popen(['ls', '-al'], stdout=subprocess.PIPE)
p2 = subprocess.Popen(
    ['grep', 'test'], stdin=p1.stdout, stdout=subprocess.PIPE
)
p1.stdout.close()
output = p2.communicate()[0]
print(output)

ーーー
注意シェルインジェクションのリスクがあるコード
subprocess.run('ls -al | grep test', shell=True)