我有一个场景,我将连接到远程机器并执行命令(优先级),期望它给出一个输出。我正在检查确切的模式,如果成功,我需要打开一个由上面执行的命令创建的文件。
我需要去指定的目录并打开文件并解析我正在使用tcl的相同内容,代码如下所述
#!/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";
}**
我希望问题很明确,我正在尝试所有方法,但没有成功..
提前致谢, Kamesh。
答案 0 :(得分:0)
将dir
与换行符一起发送将触发命令:
send "dir\n"
现在命令执行但输出可能看不到(由脚本打印到stdout),直到后续的预期匹配。要立即刷新(比如脚本调试),请使用:set timeout 1; expect; expect *
。