首页 > 解决方案 > 有没有办法在不使用期望或生成的情况下在 shell 脚本中执行 ssh 时自动回答用户提示?

问题描述

我正在尝试使用 shell 脚本测试一个 linux 机器与其他 12 个 linux 机器之间的 ssh 信任,并且我正在尝试自动将用户输入作为“是”传递给以下问题。

您确定要继续连接(是/否)?

但脚本失败并出现错误“主机密钥验证失败”。我在其中一台服务器上使用 << EOT 手动执行了 ssh 命令,但我仍然收到用户提示问题。在运行 ssh 命令时,是否有任何其他方法可以自动为用户提示传递输入值?

注意:我不能使用 spawn 或者除了一些系统限制之外,由于组织访问限制,我无法安装它们。

我尝试了以下选项,但没有一个对我有用

[command] << [EOT, EOL, EOF]
echo 'yes'
[EOT, EOL, EOF]

yes | ./script.sh

printf "yes" | ./script.sh

echo "yes" | ./script.sh

./script.sh 'read -p "Are you sure you want to continue connecting (yes/no)?";echo "yes"'

sh```
for server in `cat server_list` ; do
    UPPER_MACHINE_NAME=`echo $server | cut -d '.' -f 1`
    UPPER_MACHINE_NAME=${UPPER_MACHINE_NAME^^}
    ssh -tt user@$UPPER_MACHINE_NAME << EOT
    echo 'yes'
    touch /usr/Finastra/sshtest.txt
    EOT
done
```

标签: linuxbashshellssh

解决方案


推荐阅读