【FastAPI】シェルを実行する方法


この記事はプロモーションを含みます。

FastAPIとUvicornで構築したWebサーバー経由で、シェルを実行する方法を解説します。

はじめに

本記事では、GETメソッドの実行時に、サーバーに格納しているシェル(bash)を実行する方法を説明します。

APIサーバーの構築方法から知りたい方は、以下を参考にして下さい。

実行するシェル

GETメソッドの実行時に呼び出されるシェルです。
「test.log」というファイルに文字列「シェル実行」を出力するだけの簡単なシェルです。
シェル名は「test.sh」とします。

#!/bin/bash

echo "シェル実行" > ./test.log

API向けスクリプト

GETメソッドが呼び出された際に、シェルを実行するスクリプトです。

from fastapi import FastAPI
import subprocess

app = FastAPI()

@app.get("/")
async def exec():
    subprocess.run(["bash", "/home/work/test.sh"])

実行結果

GETメソッドの実行と実行結果を確認します。

まずは、curlコマンドでGETメソッドを実行します。
戻り値は無いので、nullが返ってきます。

[root@localhost work]# curl http://127.0.0.1:8000/
null[root@localhost work]#

次は、正しくシェルが実行されているかを確認します。
以下の結果より、ファイル「test.log」が作成され、文字列「シェル実行」が出力されているので、シェルが正しく実行されたことが確認出来ました。

[root@localhost work]# ls -l /home/work/test.log
-rw-r--r--. 1 root root 16  1月 15 03:18 /home/work/test.log
[root@localhost work]# cat /home/work/test.log
シェル実行

コメント

タイトルとURLをコピーしました