PHPを使用してリモートコンピュータでUbuntuからシェルコマンドを実行します。

PHPを使用してリモートコンピュータでUbuntuからシェルコマンドを実行します。

Webページで、リモートコンピュータでPythonスクリプトを実行するボタンが欲しい。 PHPでこれを行う方法はありますか?具体的には、リモートシステムで次のシェルコマンドを実行したいと思います。

screen -d -m ./script.py

スクリプトを実行するためにrootアクセスが必要ないので、これはマイナーなものではないかもしれないと思いました。

答え1

これがいくつかのレベルで安全でないアプローチであることを指摘し始めます。と言った:

script.pyを実行するためにルートである必要がある場合、ウェブサイトのユーザーはsudoersを設定する必要があります。まず、ウェブサイトのユーザーが誰であるかを調べる必要があります。

次に、ユーザーがパスワードなしでscript.pyを実行できるようにsudo権限を設定します。例:

apache ALL=NOPASSWD: /full/path/to/your/script.py

次に、実行可能ビットをscript.pyに追加します。

chmod +x /full/path/to/your/script.py

おそらく、pyスクリプトのヘッダーを次のように変更する必要があります。

#! /usr/bin/python

その後、PHPでshell_execを使用してスクリプトを実行できます。たとえば、次のようになります。

$output = shell_exec('/full/path/to/your/script.py');

答え2

次のスニペットを使用して実行できますが、要求はセキュリティ上の問題のようです。リモートホストにHTTP経由でクエリできるAPIがある場合は、より良いでしょう。

<?php
   $output = shell_exec('ssh user@remotehost script.py');
   echo "<pre>$output</pre>";
?>

関連情報