2016-08-23 71 views
0

我已经登录了CUCM,然后我们正在尝试执行一个正确的命令,但通过预期值我们无法执行第二个命令。 第一我们正在做这样的: -期望编程:如何期待一个特定的字符串

send -i $install_id "utils ctl set-cluster mixed-mode\r\n" 
puts "we are hitting yes &&&&&&&&&&" 
expect { 
    -i $install_id -re ".*" { 
     send -i $install_id "y\r" 
     puts "$$$$$$$$$$$$$$$ we are inside...." 
    } 
} 
puts "we are done %%%%%%%%%%" 
return 1 

这里第一个命令send -i $install_id "utils ctl set-cluster mixed-mode\r\n"是越来越成功地执行,但它不是指望循环中去。

第一个命令的输出是一样的东西: -

admin:utils ctl set-cluster mixed-mode 
This operation will set the cluster to Mixed mode. Do you want to continue? (y/n): 

在此之后,光标会在下一行,其中我不得不放弃y和输入,输出语句内的期望也没有得到印

+0

您可以尝试在详细模式下执行这些命令。在第一次发送之前添加'exp_internal 1'。 –

+0

我没有得到...因为我是新来的这些编程...你究竟想要添加什么 – user3388407

+0

你正在运行一个除了脚本或只有期望界面的命令吗? –

回答

0

我会做这样的事情:

expect { 
    -i $install_id 
    -ex "continue? (y/n):" { 
     puts "I FOUND A CONTINUE PROMPT" 
     send -i $install_id "y\r" 
     exp_continue 
    } 
    "$thePrompt" { 
     puts "I FOUND A SYSTEM PROMPT" 
    } 
} 

这样的,它只会停止expect一旦命令完成,但它会回应ŧ continue提示并继续(因为exp_continue)。在这种情况下,-ex选项适合与文本字符串相匹配,当您正在查找的内容包含多个正则表达式元字符(?())时,该选项非常方便。

并改变"$thePrompt"为正确的事情实际上匹配的提示,当然。

+0

我想ü建议的方式,但收到此错误为: - #已由Java运行时环境检测到意外的错误:在PC # #SIGSEGV(0XB)= 0x003ef025 ,pid = 24279,tid = 4150630080 # #Java VM:Java HotSpot(TM)Client VM(10.0-b23混合模式,共享linux-x86) #有问题的帧: #C [libc.so.6 + 0x13a025] # – user3388407

+0

@ user3388407这很奇怪。有意思,兄弟。 –

+0

对此的任何其他建议 – user3388407

相关问题