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 而
已
的那个进程,而 send_user 只是回显用户发出的信息,类似于 shell 中的 echo 而
已
exec 在当前子shell中执行指令