我想使用bash脚本将密码传递给ssh(是的,我知道我可以使用ssh密钥,但这不是我想要的).

我找到了一些使用expect的解决方案,但由于它不是标准的bash工具,我想知道是否可以使用管道来实现这一点.

有人能给我解释一下为什么会这样:

echo "passw或d\n" | ssh somehost.com

ssh somehost.com <(echo "passw或d\n")

doesn't w或k? Is there any possibility to make it w或k? Maybe executing ssh as a different process, obtaining its PID and then sending a string directly to it?

推荐答案

由于我的问题没有确切的答案,我做了一些调查,为什么我的代码在有其他解决方案的情况下不起作用,并决定发布我的发现来完成这个主题

"ssh使用直接TTY访问来确保密码确实有效

这就回答了问题,为什么管道在这种情况下不工作.显而易见的解决方案是创造条件,让ssh"认为"它是在常规终端上运行的,因为它可以通过简单的posix功能来实现,所以它超出了简单的bash提供的功能.

Linux相关问答推荐

与mmap和munmap相比,保留一个巨大内存文件(约400 MB)的mmap多次的性能成本

如何根据具体情况打印两行输出?

如何将参数传递给Bash函数

如何判断程序是在终端上运行还是在后台运行?

为什么控制台不接受反向换行?

使用 bash 命令将文件从子文件夹复制到另一个

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

Bash 更新 yaml 文件中的图像值

`G++ 4.9.4` 中关于 WEXITSTATUS 的奇怪行为

DMA 和内存映射 IO 有什么区别?

Linux命令行如何接受没有pin的蓝牙设备配对

如何在 Linux 命令行上解析 CSV 文件?

在 Bash 中从最后到第一个输出文件行

在 64 位 Linux 操作系统上编译 32 位程序导致致命错误

如何将整个文件夹从 Amazon EC2 Linux 实例复制到本地 Linux 机器?

Linux 上的 C++ 开发 - 我从哪里开始?

bash 中的线程?

GNU Octave 方法对矩阵中的每个项目进行操作.octave arrayfun(...)示例

在文件夹中的 gzip 文件中查找字符串

PostgreSQL psql 终端命令