用于git clone的Python脚本,无需在提示符下输入密码

时间:2017-07-20 15:42:20

标签: python git gitpython

我正在尝试使用Python脚本从私有git存储库git clone gitolite@10.10.10.55:/Intel/BareRepos/lteue.git克隆项目。我的脚本的问题是我每次都需要手动输入密码才能从本地存储库中克隆项目。

有没有pythonic方法克隆项目而不手动输入任何密码?

这是我写的剧本。

import os

path = path/to/save/cloned/project

os.chdir(path)

os.system("git clone gitolite@10.10.10.55:/Intel/BareRepos/lteue.git")#...Clonning

3 个答案:

答案 0 :(得分:1)

最好的办法是使用公钥/私钥。但是,我根本不懂噱头。 (您可能希望将其添加到标记中。)

请注意,我不建议您执行以下操作,除非您知道没有人会看到您的脚本。这是不好的安全措施等。

如果您真的想要使用Python,我会使用subprocess.Popen

from subprocess import Popen, PIPE

password = 'rather_secret_string'

proc = Popen(['git', 'clone', 'gitolite@10.10.10.55:/Intel/BareRepos/lteue.git'], stdin=PIPE)

proc.communicate(password)

答案 1 :(得分:0)

我会使用子进程来执行此操作。

因此,您使用Popen()创建流程,然后您可以与之通信。您需要使用PIPE来获取输入的密码。

from subprocess import Popen, PIPE
process = Popen(["git", "clone", "gitolite@10.10.10.55:/Intel/BareRepos/lteue.git"], stdin=PIPE)

process.communicate('password that I send')

这样的事情可能会奏效。

您也可以使用Pexpect,但我不熟悉该库。

答案 2 :(得分:0)

我不知道为什么上面的答案对我不起作用。 但是我提出了新的解决方案,它肯定会起作用,而且非常简单。

这是我的完整代码:

import os
import sys
import shutil

path        =   "/path/to/store/your/cloned/project" 
clone       =   "git clone gitolite@10.10.10.55:/Intel/BareRepos/lteue.git" 

os.system("sshpass -p your_password ssh user_name@your_localhost")
os.chdir(path) # Specifying the path where the cloned project has to be copied
os.system(clone) # Cloning

print "\n CLONED SUCCESSFULLY.! \n"