0

我有一个场景,我将连接到远程机器并在期望中执行一个命令(优先级),它会给出一个输出。我正在检查确切的模式,如果成功,我需要打开一个由上面执行的命令创建的文件。

我需要转到指定的目录并打开文件并解析我在 tcl 中使用 expect 的文件,下面提到了代码

#!/home/pub/bin/expect -f
spawn telnet 172.16.67.213 23 
expect "login name:"
send "administrator\r"
expect "password:"
send "Administrator1@\r"
expect "Windows NT Domain:"
send "\r"    
expect "C:\WINNT\Profiles\Administrator>"
send "\r"
expect "C:\WINNT\Profiles\Administrator>"
send "x -j Y -a run -d\r"
sleep 60
expect "ZZ"

****if {[string match *Z* $expect_out(buffer)]} {
        send "dir";} else {
    puts "Script failed";
    }****

这里脚本正在执行直到字符串匹配,成功时下一个命令发送“dir”不执行。

如果我替换如下的逻辑,我将得到 echo 语句,但如果我想在它不成功后执行其他命令,则返回。

**if {[string match *Z* $expect_out(buffer)]} {
        puts "Script passed";} else {
    puts "Script failed";
    }**

我希望问题很清楚,我正在尝试所有方法但没有成功..

在此先感谢,卡梅什。

4

1 回答 1

0

与换行符一起发送dir将触发命令:

send "dir\n"

该命令现在被执行,但在后续的期望匹配之前可能看不到输出(由脚本打印到标准输出)。要立即刷新它(比如脚本调试),请使用:set timeout 1; expect; expect *.

于 2013-02-20T09:57:40.553 回答