これは、raspberrypi.stackexchange.com から再投稿された質問です。ラズベリーパイのpythonで何かを動作させようとしていますが、パイ固有のものは含まれていないため、代わりにここに投稿した人から提案されました。元の投稿はこちら.
rapsberry pi の日付を変更するための Web UI を作成しようとしていますが、リターン コード 256 が引き続き返されます。
現在、私が持っているものは次のようになります:
Web ページ -> ajax リクエストを python スクリプトに送信します。
sudo date --set="20130901 20:10"
変数に格納しますcommandString
。次に、pythonは次のようになります。
os.system(commandString)
戻り値は、それが印刷される Web UI までずっと渡されます。
commandString
また、現在、値を Web UIにも返して確認していますが、問題ないようです。
問題は、テストするたびにエラー リターン コードとして 256 が返されることです。もちろん、ラズベリーパイの日付は、手動で前後に確認しているため、変更されません。
ただし、raspberry pi で手動で python にアクセスして試してみると、次のようになります。
commandString = 'sudo date --set="20130901 20:10"'
os.system(commandString)
問題なく動作します。せずに試してみるとsudo
、戻り値も256になるので、元のスクリプトの権限の問題ではないかと思いました。スクリプトのアクセス許可を確認するためにこのリンクを試してみましたが、大丈夫ですか? (os.geteuid()
は 0)
問題があれば、lighttpd と fastcgi を使用して Web UI から Python を実行しています。現在、私の lighttpd 設定は次のとおりです。
fastcgi.server = (
".py" => (
"python-fcgi" => (
"socket" => "/tmp/fastcgi.python.socket",
"bin-path" => "/var/www/command.py",
"check-local" => "disable",
"max-procs" => 1)
)
)
私が見逃しているものについてのアイデアはありますか?
元の投稿では、次のようなことを試すことも提案されました。
echo <password> | sudo -S date --set="20130829 02:02
そのようにルートパスワードを入力するのはおそらく良い考えではありませんが、試してみたところ同じ結果が得られました。ターミナル/シェルおよびPythonインタープリター内で実行すると機能しますが、Web UIからPythonへは機能しません。