我在安装了Expect软件包的Windows上使用ActiveState的ActiveTcl社区版。我曾尝试编写自己的脚本,从各种网站下载一些脚本,甚至从ActiveState网站本身复制和粘贴它们,但我总是遇到同样的问题。我的脚本可以完美地发送命令并按预期配置网络设备,但只能通过将具有睡眠周期的发送夹在中间。每当我尝试用期望匹配任何东西时,我总是得到相同的东西(当使用exp_internal 1时):expect:does"" (spawn_id exp4)匹配glob模式" AnyString"?没有。正则表达式也是如此:期望:"" (spawn_id exp4)匹配正则表达式" AnyString"?没有。它似乎工作的唯一时间是使用一个通配符:expect:does"" (spawn_id exp4)匹配glob模式" *"?是 expect:设置expect_out(0,字符串)"" expect:设置expect_out(spawn_id)" exp4" expect:设置expect_out(缓冲区)"" 但是没有其他通配符,字面值或正则表达式的组合似乎可行。我看过视频,看过截图。据我所知,我应该迭代每个角色直到找到匹配,但它实际上只是停在"",超时,然后继续到下一行。如果期望命令在Expect中不起作用,我确信我做的事情显然是根本错误的,但我不知道是什么。它似乎无法读取任何终端输出,但发送命令工作正常,所以我知道它已连接。无论我尝试什么终端程序(telnet,plink,netcat等)都有同样的问题。期待真的似乎是一个很棒的自动化工具,所以我非常感谢任何可能帮助我克服这一点的建议。收到答案后,我完全期待感到愚蠢。
答案 0 :(得分:0)
这可能是由于在更高版本的Windows上出现Expect的已知问题,遗憾的是,这些问题记录不清。期望可能在Win7或Win8上工作,可能不在Win10上。它通常在32位Windows上比64位Windows更好。