通过任务调度程序在python中运行git命令会导致权限被拒绝错误

时间:2016-05-27 17:14:11

标签: python windows git ssh

我有一个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.

有关如何让脚本使用正确密钥的任何想法?

1 个答案:

答案 0 :(得分:0)

一个可能的原因是你的ssh密钥在powershell或Git bash之外没有被识别出来。如果是Git bash,您可以尝试以下方法: subprocess.call(["C:\\Program Files\\Git\\git-bash.exe", "git", "push"])