我拥有最简单的脚本调用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