2

我的最终目标是远程登录路由器并与之交互。以下期望脚本根本没有帮助我。路由器没有任何用户 ID 或密码。这是自动登录。

期望文件代码。

set iptotelnet "10.x.x.x"
spawn telnet $iptotelnet

sleep 10
expect ">" #this is because initially the prompt will be >
sleep 10
send "enable\r" # this should change the prompt from > to # 

sleep 10
expect "#"
sleep 10
interact
sleep 10
exit

但是,我收到以下错误。

发送:spawn id exp4 未打开
    在执行时
发送“启用\r”。

这不仅是 telnet,我在使用任何其他命令时也会遇到同样的错误。

请帮我。

4

3 回答 3

2

您的脚本没有重大问题,不会导致spawn那样失败。(您的评论会引起问题,但可以通过使用;#代替 来轻松解决#。)因此,您的问题出在其他地方(嗯,很有可能)。

我看到您正在尝试在 Windows 上使用 Expect 控制 telnet。唉,telnet 是一种无法以这种方式控制的特殊情况——Windows 上的 Expect 使用系统调试工具来拦截终端输出,但这对于设置了特殊系统权限的可执行文件不起作用,而 telnet 就是其中之一这是正确的程序 - 所以你需要另一种方法。最简单的方法是获取plink.exe(这实际上是终端/自动化的 PuTTY)并使用它(在“telnet”模式下)而不是 telnet。

于 2012-09-14T12:26:44.767 回答
0

可能你不能# commentssend命令行中使用。
尝试相同但在发送字符串中不加注释。

于 2012-09-14T09:48:26.943 回答
0

它也发生在我身上。并且已经解决了。

我尝试在 Windows 上的 Cygwin 中自动远程登录服务器。

但是安装在 Windows 中的 Microsoft telnet 无法在 Cygwin shell 中运行

如果您收到以下回复,这就是您的问题类型的来源:$ which telnet /cygdrive/c/WINDOWS/system32/telnet

有两种解决方案: 1. 对于 Cygwin x86,只需安装包含 telnet 命令的包“inetutil”。2.对于Cygwin x86_64,目前(2013-09-09)“inetutil”还没有移植到64位,所以我使用plink.exe,它是PuTTy的一部分

于 2013-09-09T11:22:02.227 回答