我想从我的私人git仓库克隆使用期望在一行中输入密码。如何使用expect和git clone?
我想是这样的:
预计-c“重生混帐克隆用户@。。* 。 *:/ var /.../ repository.git /;期望“(是/否)?”;发送“是\ n”;期待“密码:”;发送“my_password \ n”;交互'
但是,它不起作用。 我在做什么错?我如何修复上面的命令行?
感谢,Arshavdki亚历山大
我想从我的私人git仓库克隆使用期望在一行中输入密码。如何使用expect和git clone?
我想是这样的:
预计-c“重生混帐克隆用户@。。* 。 *:/ var /.../ repository.git /;期望“(是/否)?”;发送“是\ n”;期待“密码:”;发送“my_password \ n”;交互'
但是,它不起作用。 我在做什么错?我如何修复上面的命令行?
感谢,Arshavdki亚历山大
你为什么不只是使用一种比密码更安全,并简化你的生活?
一个没有密码的ssh密钥将是显着更安全,而且根本不提示。
如果它必须是100%独立的,那么考虑让脚本输出SSH密钥,使用它一次,然后将其删除。 (这应该离开你的安全形势不变:密码实际上是在脚本中,这是你可以接受的。)
# Output SSH key for no-password login. (Could use mktemp instead)
cat > /tmp/ssh_key.$$ <<EOT
-----BEGIN RSA PRIVATE KEY-----
blahblahblah
-----END RSA PRIVATE KEY-----
EOT
# Make a SSH wrapper to do the right thing
cat > /tmp/git_ssh.$$ <<EOT
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /tmp/ssh_key.$$ "[email protected]"
EOT
chmod +x /tmp/git_ssh.$$
export GIT_SSH=/tmp/git_ssh.$$
# Done!
git clone [email protected]:path/to/repo
# Cleanup
rm -f /tmp/git_ssh.$$ /tmp/ssh_key.$$
是剧本看起来笨重而且(模数错误)它是自包含的自动化非常有用。
你可以尽量避免使用通过在URL中直接输入密码预计
git clone https://username:[email protected]/username/repository.git
之所以想到不能按预期工作,是因为SSH是*正确*直接写入到终端,而不是标准输出或标准错误。 – Arafangion