Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477617
  • 博文数量: 63
  • 博客积分: 1485
  • 博客等级: 上尉
  • 技术积分: 596
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 14:49
文章分类

全部博文(63)

文章存档

2018年(8)

2017年(25)

2016年(10)

2012年(6)

2010年(14)

我的朋友

分类: LINUX

2016-04-15 18:18:16

"expect" 这个工具在写一些脚本的时候比较有用,可以自动化与脚本中调用的程序进行互动操作。
网上很多例子了,比如写一个脚本进行SSH登陆阿,等等。。。

这里给一个小例子,看看它最基本的功能。

1、一个非常简单的shell程序"my_pgm.sh",用于模拟一个被调用的应用程序。
   
  1. #!/bin/sh
  2. echo ">>>> START: "
  3. echo "A:"
  4. read var_01
  5. echo "---- 1st input: $var_01----"
  6. echo "B:"
  7. read var_02
  8. echo "---- 2nd input: $var_02----"
  9. echo "<<<<< End <<<<"


2、一个expect程序"my_exp.exp",用于与"my_pgm.sh"进行互操作。

  1. #!/usr/bin/expect
  2. set timeout -1
  3. spawn ./my_pgm.sh
  4. expect "A:"
  5. send "Hello, I'm Mike\n"
  6. expect "B:"
  7. send "Bye!\n"
  8. expect eof
  9. exit


3、一个客户shell程序,通过调用"my_exp.exp"达到调用"my_pgm.sh"效果。

  1. #!/bin/sh
  2. ./my_exp.exp

执行一下吧:

  1. [who_r_u]$ ./call_my_pgm.sh
  2. spawn ./my_pgm.sh
  3. >>>> START:
  4. A:
  5. Hello, I'm Mike
  6. ---- 1st input: Hello, I'm Mike----
  7. B:
  8. Bye!
  9. ---- 2nd input: Bye!----
  10. <<<<< End <<<<

再写一个最简单的应用吧:

  1. #!/usr/bin/expect
  2. spawn tmadmin
  3. expect ">"
  4. send "printserver\n"
  5. expect ">"
  6. send "printservice\n"
  7. expect ">"
  8. send "quit\n"
  9. expect eof
  10. exit
直接执行一下这个expect脚本:

  1. [who_r_u]$ ./get_status.exp
  2. spawn tmadmin
  3. tmadmin - Copyright (c) 1996-2012 Oracle.
  4. Portions * Copyright 1986-1997 RSA Data Security, Inc.
  5. All Rights Reserved.
  6. Distributed under license by Oracle.
  7. Tuxedo is a registered trademark.
  8. > printserver
  9. Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
  10. --------- ---------- -------- -- ------ --------- ---------------
  11. BBL 154654 simple 0 0 0 ( IDLE )
  12. simpserv 00001.00001 GROUP1 1 0 0 ( IDLE )
  13. > printservice
  14. Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
  15. ------------ ------------ --------- -------- -- ------- ------ ------
  16. TOUPPER TOUPPER simpserv GROUP1 1 simple 0 AVAIL
  17. > quit
  18. [who_r_u]$
这种脚本简单实用,尤其是在自动化操作上很有帮助。



阅读(2603) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~