发送spawn id exp4未打开错误

时间:2012-09-14 09:33:02

标签: tcl telnet expect

我的最终目标是telnet到路由器并与之交互。以下期望脚本对我没有任何帮助。路由器没有任何用户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

但是,我收到以下错误。

send: spawn id exp4 not open
    while executing 
send "enable\r".

这不仅仅是使用telnet,我也可以使用任何其他命令获得相同的错误。

请帮帮我。

3 个答案:

答案 0 :(得分:2)

您的脚本没有任何重大问题,这不会导致spawn失败。 (您的评论会导致问题,但使用;#代替#可以轻松解决问题。)因此,您的问题出在其他地方(好吧,很有可能)。

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

答案 1 :(得分:0)

您可能无法在# comments命令行中使用send 尝试相同但在发送字符串中没有注释。

答案 2 :(得分:0)

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

我尝试在Windows上的Cygwin中自动telnet服务器。

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

如果您收到以下回复,则这是您的问题类型的来源:     $ telnet     / cygdrive / C / WINDOWS / SYSTEM32 /远程登录

有两种解决方案: 1.对于Cygwin x86,只需安装包含telnet命令的软件包“inetutil”即可。 2.对于Cygwin x86_64,目前(2013-09-09)“inetutil”尚未移植到64bit,所以我使用plink.exe而不是PuTTy