在shell脚本的git clone期间传递密码

时间:2016-05-16 18:32:54

标签: git shell

我编写了一个shell脚本,用于从多个位置克隆项目,该脚本作为文件发送。 我读取文件并在循环中传递每个位置并执行我的操作。

LocationFile.txt

Project1=https://enduser1@stash.my.org/my/path/testProject1.git
Project2=https://enduser2@stash.my.org/my/path/testProject2.git
Project3=https://enduser3@stash.my.org/my/path/testProject3.git
Project4=https://enduser4@stash.my.org/my/path/testProject3.git

Password.txt

Project1=password1
Project2=password2
Project3=password3
Project4=password4

我有一个加密的密码文件并存储在服务器中,我可以将其作为脚本的一部分阅读并传入我的脚本 当我在克隆步骤中运行我的脚本时提示输入密码时,我试图传递下面的密码,这是无效的

##############
gitpassword=$password1 #retrieved from Password.txt

for xxx
    do
    ...
    ... 
    git clone "${ProjectArrayList[1]}" 
    read $gitpassword
    ...
    ..
    done
##############

我知道如果我使用ssh,我可以减少密码,我不想这样做。 有没有办法用我现有的方法来实现这个目标

2 个答案:

答案 0 :(得分:2)

您可以使用expectsend功能自动模拟用户输入。

以下是语法:

expect -c 'spawn sudo git clone "${ProjectArrayList[1]}"; expect assword; send "password\n"; interact'

答案 1 :(得分:1)

Git有一个“凭据助手”可以完成这项工作[它的设计可以通过https工作]。

请参阅:https://git-scm.com/docs/git-credential-storehttps://help.github.com/articles/caching-your-github-password-in-git/