使用ssh连接中的expect脚本无法发送密码命令

时间:2015-11-04 20:13:00

标签: linux ssh expect send

我希望能够使用expect脚本使用SSH连接远程登录路由器,这就是我所拥有的:

#!/usr/bin/expect

set host "192.168.1.50"

set user "root"

set password "mypass"

spawn ssh "$user\@host"

expect "word:"

send "$password\r"

当我尝试使用它时,路由器变得没有响应(并且可能超时)。当它进入密码提示行时,它立即退出。

我在第一次登录时提示“是/否”时,手动输入“是”,使用我的SSH密钥进行身份验证。然后,在第一次尝试后,路由器只是自动提示我输入密码。确切地说,它有两行:

User Authentication
Password:

然后几秒钟之后,它回到了我的根目录,好像send命令在密码提示后没有发送任何内容。

所以,我的问题是,对于期望和脚本的一般知识非常有限,问题是:解决方案是什么?有什么问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了这个确切的问题,我无法“拾起”expect停止的地方,我认为这将是默认行为。

正如@glennjackman在评论中所说,在最后添加interact可以让你从中断的地方继续。

#!/usr/bin/expect
set host "192.168.1.50"
set user "root"
set password "mypass"
spawn ssh "$user\@host"
expect "word:"
send "$password\r"
interact