我想從我的私人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