这是来自 raspberrypi.stackexchange.com 的转贴问题。当我试图在树莓派上的 python 上工作时,因为它不涉及任何特定于 pi 的东西,所以我在这里发帖的人建议这样做。原帖在这里。
我正在尝试制作一个 web ui 来更改 rapsberry pi 中的日期,但我一直收到 256 的返回码。
目前我所拥有的是这样的:
网页 -> 向 python 脚本提交 ajax 请求 python 检查什么类型的命令(在这种情况下是时间/日期命令)并将字符串拼凑在一起,如下所示:
sudo date --set="20130901 20:10"
并将其存储在一个变量commandString
中。然后python去:
os.system(commandString)
并且返回值一直传递到打印出来的 web ui。
我目前也将commandString
值返回到 web ui 以验证它,它看起来没问题。
问题是每次测试时,我都会不断返回 256 作为错误返回码。树莓派上的日期当然不会改变,因为我在之前和之后手动检查它。
但是,如果我在树莓派上手动进入 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
虽然像这样输入我的 root 密码可能不是一个好主意,但我尝试了它并得到了相同的结果:它在终端/shell 和 python 解释器中工作时有效,但不能通过 web ui 到 python。