2015-02-24 42 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