我正在编写一个脚本来获取密码和SSH。注意:我不会详细介绍,但安全/加密不是问题 - 硬编码密码就是我想要的。但是,我遇到麻烦,以便Unix脚本用它来回答“密码:”提示。我尝试将它用于管道,它仍然向我询问提示。
我在这里看到了使用期望的答案...我不是shell脚本专家,当我尝试它时我得到错误spawn:找不到命令,交互:找不到命令,发送:命令没有找到。我试过谷歌搜索某种期望下载,什么也没发现......我错过了什么?此脚本应该可以分发给可能安装或不安装外部脚本的人。
我的非工作代码:
#!/bin/bash"
STR="MYPASS"
echo $STR | ssh -t -t user@host
答案 0 :(得分:3)
根据您阅读的答案,如果您想与ssh的密码提示进行交互,则需要使用expect。这是因为SSH没有从stdin读取密码(你正在管道它),它从tty读取它。
如果您从期望脚本中获得spawn: command not found
和interact: command not found
,那么您就可以将预期代码写入实际上是shell脚本的线索。确保您的预期脚本中的shebang line实际包含#!/path/to/expect
而不是#!/bin/sh
。
在任何情况下,很多,很多更好的想法是使用SSH和公钥认证。没有密码短语的私钥很容易编写脚本,并且比将密码硬编码到脚本中的安全性要低。