我的最终目标是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,我也可以使用任何其他命令获得相同的错误。
请帮帮我。
答案 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