2015-02-24 104 views
0

首先,我完全禁止在这里请原谅我如果这是一个愚蠢的问题或打破了一些网络规则。这是我在unix /编程世界中的灵感尝试 我正在尝试基于网络摄像头机器人树莓。 我想通过网页/ python脚本来控制它。 我正在尝试关注本教程http://blog.ramon.no/2013/06/build-simple-internet-controlled-webcam.html开始停止服务并通过python脚本关机

我设置树莓运动而不是mjpeg-streamer在网页上进行流式传输。现在我正试图停止网页的启动流并关闭树莓。 这是我在阅读论坛后发现的,但它不起作用。我设法关闭树莓三个时间连续,但我改变了一些东西,现在我不能这样做了

elif action == "shutdown": 
print "Attempting to shut down" 
call(["sudo", "shutdown", "-h", "now"]) 
elif action == "startstream": 
    import os 
os.system("sudo service motion start") 
elif action == "stopstream": 
    import os 
os.system("sudo service motion stop") 

如果我按了启动/停止流没有发生,如果我推关闭我收到一个500错误

我授予用户权限到www

sudo nano /etc/sudoers 
www-data ALL=(ALL) NOPASSWD: ALL 

由脚本EXEC

chmod +x rambot.py 

这是Apache的错误日志

[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:38 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:39 2015] [error] [client 192.168.0.5] File does not exist: /var/www/css, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:37:41 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:18 2015] [error] [client 192.168.0.5] File does not exist: /var/www/css, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5]  elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5]  ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] SyntaxError, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] : , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:19 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] elif action == "stopstream":, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5]  ^, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] SyntaxError: invalid syntax, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:38:59 2015] [error] [client 192.168.0.5] Premature end of script headers: rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5] File ", referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5] /usr/lib/cgi-bin/rambot.py, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5] ", line , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5] 87, referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5] , referer: http://192.168.0.10:8083/ 
[Tue Feb 24 09:39:01 2015] [error] [client 192.168.0.5]  , referer: http://192.168.0.10:8083/ 

回答

2

我看到缩进是离开的。如果这不是错字,请按以下方式缩进:

elif action == "shutdown": 
    print "Attempting to shut down" 
    call(["sudo", "shutdown", "-h", "now"]) 
elif action == "startstream": 
    import os 
    os.system("sudo service motion start") 
elif action == "stopstream": 
    import os 
    os.system("sudo service motion stop") 

如果这不是问题,对不起,我不确定。

+0

谢谢!我解决了复制你的代码,现在它完美的工作!THx – Andrea 2015-02-24 12:37:25

+0

高兴地帮助:)请接受答案,当你可以 – haraprasadj 2015-02-24 12:40:09

0

我们推荐使用子模块来执行,而不是使用os.system()函数命令。 参考:https://docs.python.org/2/library/os.html#os.system

的子模块提供了产卵新的流程和检索其结果更加强大的工具;使用该模块优于使用此功能

此外,在脚本开始时加载所需的模块更为标准。

你可以这样来做:

import subprocess 
[...] 
elif action == "shutdown": 
    print "Attempting to shut down" 
    return_code = subprocess.call(['sudo', 'shutdown', '-h', 'now']) 
elif action == "startstream": 
    return_code = subprocess.call(['sudo', 'service', 'motion', 'start']) 
elif action == "stopstream": 
    return_code = subprocess.call(['sudo', 'service', 'motion', 'stop']) 

,如果你想获得你的命令的输出,你可以使用subprocess.check_output()代替subprocess.call()

cmd_output = subprocess.check_output(['sudo', 'service', 'apache2', 'status']) 
print(cmd_output) 
cmd_output = cmd_output.decode('utf-8').strip('\n\r') 
print(cmd_output) 

此打印:

b'Apache2 is running (pid 2024).\n' 
Apache2 is running (pid 2024). 

注:我只使用python3,我希望没有区别在这里唱python2。

+0

谢谢你的回答我会检查出这个命令我会尝试在我的代码thx中实现它! – Andrea 2015-02-24 12:37:51