破折号脚本,为命令发送是

dash script, send yes for a command

我想使用破折号调用带有脚本的命令。这是我的代码:

#!/bin/sh
ip='172.45.0.219'
cmd1='yes yes'
cmd2="./ssh foo@$ip"
eval $cmd1 | $cmd2

当我 运行 我的脚本时,这是我的输出:

Pseudo-terminal will not be allocated because stdin is not a terminal.
The authenticity of host '172.45.0.219 (172.45.0.219)' can't be established.
ECDSA key fingerprint is SHA256:PpEShWXU3zQhkyAsy4Zd1Jddb2lW0ULautIdPMr8yxA.
Are you sure you want to continue connecting (yes/no)?

正在等待 'yes/no'。 我希望此脚本自动获得 'yes'。

我尝试了一些像这样的其他方法:

eval echo yes | $cmd2

并得到相同的结果。 感谢您的帮助。

这种情况下,必须对用户进行认证,解决方法是:

#!/bin/sh
ip='172.45.0.219'
cmd="ssh-keyscan -H $ip >> ~/.ssh/known_hosts"
eval $cmd

然而,这并不是这个问题的真正答案。