如何使用expect和git clone?
我正在尝试使用 Expect 在一行中输入密码来从我的私人 git 存储库进行克隆。
我正在尝试类似的事情:
expect -c 'spawn git clone user@..*.*:/var/.../repository.git/;期待“(是/否)?”;发送“是\n”;期待“密码:”;发送“my_password\n”;交互'
但是,它不起作用。 我做错了什么?如何修复上面的命令行?
谢谢,阿尔沙夫基·亚历山大
I'm trying to clone from my private git repository using expect to enter the password in one line.
I'm trying something like:
expect -c 'spawn git clone user@..*.*:/var/.../repository.git/; expect "(yes/no)?"; send "yes\n"; expect "password:"; send "my_password\n";interact'
But, it doesn't work.
What am I doing wrong? How can I fix the command line above?
Thanks, Arshavdki Alexander
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不使用比密码更安全的东西来简化您的生活呢?
没有密码的 ssh 密钥将显着更安全,并且根本不会提示。
如果它必须是 100% 独立的,那么请考虑让脚本输出 SSH 密钥,使用一次,然后将其删除。 (这应该使您的安全状况保持不变:密码在脚本中有效,这对您来说是可以接受的。)
是的,该脚本看起来很笨拙,但(模数错误)它是独立的,对于自动化非常有用。
Why don't you just use something more secure than a password and simplify your life?
An ssh key with no password will be significantly more secure and not prompt at all.
If it must be 100% self-contained, then consider making the script output the SSH key, use it once, then remove it. (That should leave your security situation unchanged: the password is effectively in the script, which is acceptable for you.)
Yes the script looks unwieldy but (modulo bugs) it is self-contained pretty useful for automation.
您可以通过直接在 url 中输入密码来避免使用 Expect。
请注意 - 这会导致您的密码存储在 .git 文件中,从而成为永久不安全的选项。
但是,您可以省略密码:
git clone https://[email]受保护]/用户名/repository.git
git 会要求你输入密码,它不会保存在 .git/config 中,也不会保存在你的 bash 历史记录中
You could avoid using expect by directly entering password in the url
Please note - this causes your password to be stored in the .git files, making this a permanently insecure option.
However, you can leave out the password:
git clone https://[email protected]/username/repository.git
git will ask you for password and it will not be saved in .git/config nor in your bash history