Ubuntu 中的 Bash 管道答案

Ubuntu 中的 Bash 管道答案

在 bash 脚本中,我想知道如何通过管道输入答案,例如:

ssh -l username -i /home/ubuntu/.ssh/id host.com < yes

ssh 连接会询问我是否要继续连接,我想自动输入答案“是”并输入,但我的脚本“<yes”似乎不起作用。有人知道如何在 Ubuntu 下的 bash 中正确输入和输入响应“是”吗?

答案1

通常,只有在 ssh 执行主机密钥检查时才会询问您是否要连接。与其尝试使用 expect 或管道来禁用它,不如直接在 ssh 配置中禁用它。

添加StrictHostKeyChecking no到您的~/.ssh/config,然后 ssh 将不再询问您是否要连接,它只会连接。

答案2

用来ssh -o "StrictHostKeyChecking no" -l username -i /home/ubuntu/.ssh/id host.com完全避免该问题。

答案3

首先,你应该尝试这个,而不是< yes

$ echo "yes" | ssh -l username -i /home/ubuntu/.ssh/id host.com

其次,即使这样也行不通,因为 ssh 不会从 stdin 读取答案,而是直接从终端读取,所以你需要类似预计

$ expect -c 'spawn dislocate ssh -l username -i /home/ciupicri/.ssh/id_rsa test3
expect {
    "(yes/no)? " {
        send "yes\n"
        expect {
            "Warn" exit
        }
    }
}'
$ dislocate

脱臼是 Expect 附带的命令(至少在 Fedora 上)。y当被问到时,请回答connect? [y]

您也可以尝试使用期望,一个纯 Python 类 Expect 模块。查看其配置单元sshls.py 复制代码例子。

相关内容