我擁有最簡單的腳本調用update.sh
運行shell腳本
#!/bin/sh
cd /home/pi/circulation_of_circuits
git pull
當我把這個從終端與./update.sh
我得到已經起牀了最新或者更新文件像預期一樣。
我也有一個Python腳本,裏面那個素文字是:
subprocess.call(['./update.sh'])
當調用同一個腳本,我得到:
權限被拒絕(公鑰)。 致命:無法從遠程存儲庫讀取。
請確保您擁有正確的訪問權限 並存在存儲庫。
(我使用SSH)。
-----------------更新--------------------
其他人有一個找我:
好吧,這樣有些進步。當我啓動映像時,我無法在 的repo目錄中運行git pull,並且bash腳本也失敗。它似乎是 ,因爲bitbucket存儲庫是私人的,需要認證 拉(我使用的是公開的,這就是爲什麼我沒有 問題)。大概git在第一個輸入 之後記得這個,bash不知何故會讓git認爲你隨後輸入了 命令,但是從python運行它並不相同。
我不是git專家,但必須有一些方法來設置這個,所以 python可以提供身份驗證。
這是否解決您的問題(傳遞'殼=真'標誌):http://stackoverflow.com/a/325474/608259 – kalaracey
沒有,萬一它的事項我把它叫做這樣'CMD = [ '/home/pi/circulation_of_circuits/update.sh'] \t \t過程= subprocess.Popen(CMD,殼=真,標準輸出= subprocess.PIPE) \t \t process.wait()' – clankill3r
如果有人想知道, 'os.geteuid()'給出一個0,所以應該是好的。 – clankill3r