- 论坛徽章:
- 16
|
回复 1# sunabeng
有时候你send一个命令,希望得到结果,并加以判断,需求在这里http://bbs.chinaunix.net/thread-3575650-1-1.html
你可以看下expect_out(buffer)这个buffer保存了上一个命令输出的到匹配处之间的输出,可以通过正则来提取出来。
send "ip addr|awk '/eth0/&&/32/{print \$2}'\r" #执行一个shell命令,看结果是否是172.10.0.249/32
expect -re {.*\/(.*)\r\n} { #可以用正则的子串来提取命令执行结果,expect_out(0,string)是整个正则匹配的内容,1是第一个子串匹配的内容,有趣的是,包括你send过去的命令连同shell 提示符号[root@test.com~]# 也被被当做输出。这个可以通过debug看出来,回车符号是\r\n。至于子串匹配,可以看手册,一共有9个,当然第二个就是expect_out(2,string),以此类推。
set ip $expect_out(1,string) 把这个子串正则匹配的结果赋给IP
}
if {$ip == "172.18.0.249/32" } { #判断是否,做动作。
send "who\r" }
你可以send "hostname\r“
然后通过这种方式提取出来。 |
|