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 シェル実行
リンク
コメント