2017-07-20 61 views
1

我想从使用Python脚本的私人git存储库git clone [email protected]:/Intel/BareRepos/lteue.git克隆项目。我的脚本存在的问题是我需要每次手动输入密码以从本地存储库复制项目。Python脚本git克隆,而不提示密码在提示

是否有任何pythonic方式克隆项目,而无需手动输入任何密码?

这是我写的脚本。

import os 

path = path/to/save/cloned/project 

os.chdir(path) 

os.system("git clone [email protected]:/Intel/BareRepos/lteue.git")#...Clonning 
+0

https://stackoverflow.com/a/12467358/7976758 – phd

+0

的可能的复制[Gitolite混帐克隆需要SSH密码](https://stackoverflow.com/问题/ 12467293/gitolite-混帐克隆要求-SSH密码) – LangeHaare

回答

1

最好的办法是使用公钥/私钥。但是,我根本不知道gitolite。 (您可能需要将其添加到标签中。)

请注意,我不会推荐进行以下操作,除非您知道没有人擅自会看到您的脚本。这是不好的安全做法等。

如果你真的希望这是在Python中,我会使用subprocess.Popen

from subprocess import Popen, PIPE 

password = 'rather_secret_string' 

proc = Popen(['git', 'clone', '[email protected]:/Intel/BareRepos/lteue.git'], stdin=PIPE) 

proc.communicate(password) 
0

我会使用子进程来做到这一点。

因此,您使用Popen()来创建一个进程,然后您可以与它进行通信。您需要使用PIPE将密码输入到输入中。

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

process.communicate('password that I send') 

这样的事情可能会起作用。

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

1

我不知道为什么上述答案不适合我。 但我想出了可以肯定的新解决方案,而且非常简单。

这里是我的完整代码:

import os 
import sys 
import shutil 

path  = "/path/to/store/your/cloned/project" 
clone  = "git clone [email protected]:/Intel/BareRepos/lteue.git" 

os.system("sshpass -p your_password ssh [email protected]_localhost") 
os.chdir(path) # Specifying the path where the cloned project has to be copied 
os.system(clone) # Cloning 

print "\n CLONED SUCCESSFULLY.! \n"