FastAPIとUvicornで構築したWebサーバー経由で、シェルを実行し、その実行結果を取得する方法を解説します。
はじめに
先日、GETメソッドの実行時にbashシェルスクリプトを実行する方法を説明しました。
今回は、実行したbashシェルスクリプトの実行結果を取得する方法を説明します。
シェルを実行する方法は以下で解説しています。
APIサーバーの構築方法から知りたい方は、以下を参考にして下さい。
実行するシェル
GETメソッドの実行時に呼び出されるシェルです。
「シェル実行」を出力するだけの簡単なシェルで、シェル名は「test.sh」とします。
#!/bin/bash
echo "シェル実行"
API向けスクリプト
GETメソッドが呼び出された際に、シェルを実行するスクリプトです。
from fastapi import FastAPI
import subprocess
app = FastAPI()
@app.get("/")
async def exec():
result = subprocess.run(["bash", "/home/work/test.sh"], capture_output=True)
return {"text": result.stdout}
実行結果
GETメソッドの実行と実行結果を確認します。
curlコマンドでGETメソッドを実行します。
シェルの実行結果である文字列「シェル実行」を取得することが出来ました。
[root@localhost work]# curl http://127.0.0.1:8000/ {"text":"シェル実行\n"}[root@localhost work]#
リンク
コメント