Session Expect在telnet之后失去连接,并且不发送任何后续的";“期望发送”;命令

Session Expect在telnet之后失去连接,并且不发送任何后续的";“期望发送”;命令,session,tcl,telnet,expect,Session,Tcl,Telnet,Expect,我有一个自动的telnet会话。。我的问题有点让人困惑,但我会尝试用例子来解释 例1: spawn telnet 172.23.144.180 2068 after 2000 send "\r" expect "loader>" send "boot n7000-s2-kickstart.6.1.1.66.gbin n7000-s2-dk9.6.1.1.66.gbin\r" ### HERE I NEED TO WAIT FOR 3 MINUTES FOR MY EXPECT STRIN

我有一个自动的telnet会话。。我的问题有点让人困惑,但我会尝试用例子来解释

例1:

spawn telnet 172.23.144.180 2068
after 2000
send "\r"

expect "loader>"
send "boot n7000-s2-kickstart.6.1.1.66.gbin n7000-s2-dk9.6.1.1.66.gbin\r"
### HERE I NEED TO WAIT FOR 3 MINUTES FOR MY EXPECT STRING ####
### SO IM SETTING TIME OUT ###
set timeout 180

### AFTER 3 MIN ### 
expect "Feature poap enabled/disabled"
send "yes\r"

expect "Do you want to enforce secure password standard (yes/no)"
send "yes\r"
发生了什么,场景1:它永远等待,不向控制台发送任何东西(我在控制台上看到“
功能poap启用/禁用
”日志)

发生了什么,场景2:如果我在180000之后睡觉3分钟;而不是 “
set timeout 180
”:无论发生什么情况,脚本都会发送“
yes
”即第一个“
expect send

我希望我的脚本仅在看到“
功能poap已启用/已禁用”
”时才发送“是”。。。谁能帮我做这个

我做了更多的研究,发现这只发生在telnet进程上,而不是常规进程(即不是telnet)

工作出色;180000之后也可以正常工作


谢谢你的帮助

使用exp_internal 1,发现无论expect的字符串是什么……它都会搜索给定的字符串几秒钟……然后打印“expect:timed out”并发送。在我的情况下,即“yes”。。。。。。所以我使用了SETTIMEOUT-1,它可以正常工作。它将永远等待字符串。。。。这是我需要的……感谢大家的参与

这是什么操作系统?Windows还是某种形式的Unix?这真的很重要,因为在Windows上有一些非平凡的交互…在脚本的开头添加以下内容:
exp_internal 1
,看看为什么它不匹配。我问了,因为Telnet不能在Windows上与Expect一起工作(我可以解释为什么,但它很可怕,而且非常晦涩!)最简单的解决方法是使用
plink-telnet
(其中
plink
是PuTTY套件的一部分)。windows上的AIK telnet不是普通的CLI,它使用。使用expect编写TUI脚本很困难(如果不是不可能的话)。使用exp_internal 1,发现无论expect的字符串是什么…它都会搜索给定的字符串几秒钟…然后打印“expect:timed out”并发送。在我的情况下,即“yes”。。。。。。所以我使用了SETTIMEOUT-1,它可以正常工作。它将永远等待字符串。。。。这是我需要的…谢谢大家的参与。。
package require Expect
set timeout 180
expect "Feature poap enabled/disabled"
send "Yes\r"