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)