我有一个python脚本,我想每隔几分钟运行一次从git repo中提取数据,看起来基本上是这样的:
import os
import subprocess
import sys
def execute_command(command):
p = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
#do some stuff with stdout, stderr - return stderr if it exists
if __name__ == "__main__":
os.chdir("C:\MyGitRepo")
reset_command = "git reset --hard HEAD"
pull_command = "git pull"
reset_stderr = execute_command(revert_command)
pull_stderr = execute_command(pull_command)
#do some stuff with stderrs
我创建了一个ssh密钥并将其添加到ssh-agent以及托管repo的服务器。当我通过powershell运行脚本时它工作正常并且repo被更新,但是当我通过任务调度程序设置任务来运行它时,它会导致权限被拒绝错误。
我已将任务计划程序中的任务更改为在我手动运行它的帐户下运行,但仍然可以:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
有关如何让脚本使用正确密钥的任何想法?
答案 0 :(得分:0)
一个可能的原因是你的ssh密钥在powershell或Git bash之外没有被识别出来。如果是Git bash,您可以尝试以下方法:
subprocess.call(["C:\\Program Files\\Git\\git-bash.exe", "git", "push"])