2017-07-20 16 views
1

Pythonスクリプトを使用してプライベートgitリポジトリgit clone [email protected]:/Intel/BareRepos/lteue.gitからプロジェクトを複製しようとしています。私のスクリプトの問題は、プロジェクトをローカルリポジトリから複製するたびに手動でパスワードを入力する必要があることです。プロンプトでパスワードを入力せずにクローンを作成するPythonスクリプト

パスワードを手動で入力せずにプロジェクトをクローンする方法はありますか?

これは私が書いたスクリプトです。

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 [Gitolite gitのクローンはsshのパスワードを要求する]の – phd

+0

可能な複製(https://stackoverflow.com/:ここ

は私の完全なコードです質問/ 12467293/gitolite-git-clone-requires-ssh-password) – LangeHaare

答えて

1

公開鍵/秘密鍵を使用するのが最善の方法です。しかし、私はギトライトを全く知らない。

あなたの誰かがあなたのスクリプトを見ていないことを知っていない限り、以下のことをお勧めしません。これはセキュリティ上の悪い習慣などです

本当にこれを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" 
関連する問題