2

我正在编写一个脚本来获取密码并使用它进行 SSH。注意:我不会详细介绍,但安全/加密在这里不是问题——我想要的是硬编码密码。但是,我无法通过管道输入它,以便 Unix 脚本用它来回答“密码:”提示。我试着用管道输入它,它仍然要求我提示。

我在这里看到了使用期望的答案...我不是 shell 脚本专家,当我尝试它时,我得到了错误 spawn: command not found、interact: command not found 和 send: command not found。我试过用谷歌搜索某种期望下载的东西,但什么也没找到……我错过了什么?此脚本应该可以分发给可能安装或未安装外部脚本的人。

我的非工作代码:

#!/bin/bash"
STR="MYPASS"
echo $STR | ssh -t -t user@host
4

1 回答 1

3

根据您阅读的答案,如果您想与 ssh 的密码提示进行交互,则需要使用expect 。那是因为 SSH 不会从标准输入(您在管道中)读取密码,而是从 tty 读取密码。

如果您从期望脚本中获取spawn: command not foundinteract: command not found来自期望脚本,那么这就是您将期望代码写入实际上是 shell 脚本的线索。确保您的期望脚本上的shebang 行实际上包含#!/path/to/expect而不是#!/bin/sh.

在任何情况下,一个更好主意是使用带有公钥认证的 SSH。没有密码短语的私钥很容易编写脚本,并且它的安全性不亚于将密码硬编码到脚本中。

于 2013-03-13T03:04:14.927 回答