2016-12-17 78 views
0

我使用安装了Expect软件包的Windows上ActiveState的ActiveTcl的Community Edition。我曾尝试编写自己的脚本,从各种网站下载一些脚本,甚至从ActiveState网站上复制粘贴它们,但我总是遇到同样的问题。我的脚本可以完美地发送命令,并按预期配置网络设备,但只能通过将睡眠周期夹在发送中。每当我尝试与期望匹配时,我总是会得到相同的东西(当使用exp_internal 1时):expect:“”(spawn_id exp4)是否匹配glob模式“AnyString”?没有。和正则表达式一样:expect:“”(spawn_id exp4)匹配正则表达式“AnyString”?没有。似乎工作的唯一时间是使用单个通配符:expect:“”(spawn_id exp4)是否匹配glob模式“*”? yes expect:set expect_out(0,string)“” expect:set expect_out(spawn_id)“exp4” expect:set expect_out(buffer)“” 但是没有其他的通配符组合,literal或regex似乎工作。我看过视频并看过截图。从我所能预料的应该迭代每个角色直到找到一个匹配,但它从字面上停止在“”,超时,并继续到下一行。如果expect命令在Expect中不起作用,我确信我正在做一些明显根本性错误的事情,但我只是不知道该怎么做。就好像它不能读取任何终端输出,但发送命令完美工作,所以我知道它已连接。无论我尝试的终端程序(telnet,plink,netcat等)都有同样的问题。期待真的似乎是一个令人敬畏的自动化工具,所以我非常感谢任何可能帮助我解决问题的建议。收到答复后,我完全期待自己感到很蠢。期望脚本不能匹配

回答

0

这可能是由于在更高版本的Windows上使用Expect时出现的已知问题,而这些问题很遗憾地记录在案。预计可能工作在Win7或Win8上,可能不在Win10上。它通常在32位Windows上比在64位Windows上更好。