我想使用脚本从git下载源代码。
以下git
命令会产生提示:
git clone ssh://url.com/repo.git git_test3
Cloning into 'git_test3'...
The authenticity of host 'url.com (1.1.1.1)' can't be established.
ECDSA key fingerprint is .
Are you sure you want to continue connecting (yes/no)?
我开发了以下脚本,以便脚本自动输入“是”:
#!/bin/sh
git_clone() {
git clone ssh://url.com/repo.git test <<EOF > /dev/null
yes
EOF
}
git_clone
但它不起作用。该脚本始终会生成提示(yes/no)
。
我错过了什么?
答案 0 :(得分:1)
该消息(和交互)来自ssh命令,而不是git本身。 (这是间接有用的,因为它意味着如果您的目标只是为了避免交互,您知道要定位哪个命令:您只需要告诉ssh您实际上并不关心对其他主机进行身份验证,或者使用诸如{之类的协议{1}}代替git://...
。)
如果你真的想亲自处理这种交互,你需要打开一个pty(可能是期望的,如Wolf noted in a comment)。原因是ssh打开ssh://...
以强制与用户交互,而不是从任何管道或文件重定向读取。因此,您必须为其提供一个由您自己的程序控制的控制终端。