expect,可交互式linux脚本

expect 是linux下对于可交互shell的自动化脚本工具,其常见形式如下:

clean-memcache.exp (在linux下 ,扩展名是没有意义的,此处只是标识该脚本是expect脚本而已),该脚本用途是清楚某机器上的memcache缓存而已


#!/usr/bin/expect
##set variable
set port [lindex $argv 0]
set timeout 10
#send "--------------clear memcache for test---------------\r"
spawn telnet 10.20.162.56 $port
exec sleep 1
send "flush_all\r"
expect "OK"
send "quit\r"
exec sleep 1
exit

 
需要解释一下的关键词有:
    set 赋值操作
 
    spawn :发起一个子shell,执行spawn后面的命令只有 spawn 执行的命令结果才会被 expect 捕捉到,因为 spawn 会启动一个进程,只有这个进程的相关信息才会被捕捉到
 
    expect:阻塞等待期待的值,可以是 eof,即文件结束。
 
    send 和 send_user:send 会将 expect 脚本中需要的信息发送给 spawn 启动
的那个进程,而 send_user 只是回显用户发出的信息,类似于 shell 中的 echo 而
 
    exec 在当前子shell中执行指令
posted @ 2013-05-17 16:43  知米_无忌  阅读(476)  评论(0编辑  收藏  举报