expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程—-expect获取指定关键字—-send向指定程序发送指定字符—-执行完成退出.

安装

  1. 查看提供expectrpm
  2. yum provides expect
  3. 直接通过yum安装
  4. yum install -y expect
  5. 查看expect程序安装的位置
  6. which expect
  7. spawn 交互程序开始后面跟命令或者指定程序
  8. expect 获取匹配信息匹配成功则执行expect后面的程序动作
  9. send exp_send 用于发送指定的字符串信息
  10. exp_continue expect中多次匹配就需要用到
  11. send_user 用来打印输出 相当于shell中的echo
  12. exit 退出expect脚本
  13. eof expect执行结束 退出
  14. set 定义变量
  15. puts 输出变量
  16. set timeout 设置超时时间
  17. [root@localhost ~]# cat connectmysql.sh
  18. #!/usr/bin/expect -f
  19. set pswd MyNewPass4!
  20. spawn mysql -uroot -p
  21. set timeout 300
  22. expect "Enter password:"
  23. send "$pswd\r"
  24. interact
  25. [root@localhost ~]# ./connectmysql.sh
  26. spawn mysql -uroot -p
  27. Enter password:
  28. Welcome to the MySQL monitor. Commands end with ; or \g.
  29. Your MySQL connection id is 11
  30. Server version: 5.7.33 MySQL Community Server (GPL)
  31. Copyright (c) 2000, 2021, Oracle and/or its affiliates.
  32. Oracle is a registered trademark of Oracle Corporation and/or its
  33. affiliates. Other names may be trademarks of their respective
  34. owners.
  35. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  36. mysql>