[[IT知识]] 深入解析Expect脚本:自动化交互式任务从未如此简单!

[复制链接]
查看: 2|回复: 0
发表于 1 小时前 | 显示全部楼层 | 阅读模式
易博V9下载

深入解析Expect脚本:自动化交互式任务从未如此简单!

expect 脚本总结。

关于一些基础知识和基础示例,可参考:

linux shell之expect 教程

expect实用示例

(1)声明函数和调用函数

  1. proc insertDebianUserIfNo {username password} {
  2. send "use mysql\r"
  3. expect "*Database changed*"
  4. send "select User from user where User='$username';\r"
  5. expect {
  6. "*Empty set*" {
  7. puts "数据库 $username 帐号不存在,尝试创建\n"
  8. send "create user '$username'@'localhost' identified by '$password';\r"
  9. expect "*Query OK*"
  10. send "flush privileges;\r"
  11. expect "*Query OK*"
  12. send "grant ALL PRIVILEGES ON *.* to '$username'@'localhost';\r"
  13. expect "*Query OK*"
  14. puts "数据库 $username 帐号创建成功\n"
  15. }
  16. "*1 row in set*" {}
  17. }
  18. }
复制代码

调用示例

  1. insertDebianUserIfNo $username $password
复制代码

以上是带参数的函数,不带参数如下:

proc insertDebianUserIfNo {} {
    ......
}

调用示例

insertDebianUserIfNo

(2)bash 脚本调用并传参

  1. ......
  2. mysql_default_user=`cat /etc/mysql/debian.cnf|grep user|head -n 1|awk '{print $3}'`
  3. mysql_default_pass=`cat /etc/mysql/debian.cnf|grep password|head -n 1|awk '{print $3}'`
  4. /usr/local/bin/init_mysql.expect.sh $mysql_default_user $mysql_default_pass
复制代码

接受参数的脚本文件 init_mysql.expect.sh 代码片段如下:

  1. #!/usr/bin/expect
  2. set timeout 6
  3. set username [lindex $argv 0] #地一个参数
  4. set password [lindex $argv 1] #地二个参数
  5. puts "username : $username password : $password\n"
  6. ......
复制代码

(3)多分支

  1. ......
  2. send "select User from user where User='$username';\r"
  3. expect {
  4. "*Empty set*" {
  5. puts "数据库 $username 帐号不存在,尝试创建\n"
  6. send "create user '$username'@'localhost' identified by '$password';\r"
  7. expect "*Query OK*"
  8. send "flush privileges;\r"
  9. expect "*Query OK*"
  10. send "grant ALL PRIVILEGES ON *.* to '$username'@'localhost';\r"
  11. expect "*Query OK*"
  12. puts "数据库 $username 帐号创建成功\n"
  13. }
  14. "*1 row in set*" {} #不做处理
  15. }
复制代码
易博软件介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表