网站首页 > 技术教程 正文
背景
问答频道看到一个关于 expect 命令操作 MySQL 的问题,这个命令没见过,花了半个小时研究了一下,发现这个工具还是挺好用的。
本文整理一下解答该问题的过程,顺便练习一下 Shell 编程。
安装 expect
测试这个脚本,执行到了 /usr/bin/expect 这一行时报文件不存在错误,一搜才知道 expect 是一个命令,需要安装,安装命令为:
yum install expect
自动登录 MySQL
这个脚本的目的是使用 expect 命令自动登录 MySQL 并循环登录 N 次,完成插入 N 条数据。
需要解决的几个问题是:
- 每一轮登录 MySQL 并执行完成 insert 后需要退出命令
- 循环累加操作必须放在 expect 的 EOF 外部
- send 发送参数时需要空格
- Shell 条件语句要用中括号,且首尾处必须要有空格
创建测试库和表:
create database testserver;
use testserver;
create table testnum( id varchar(50) ,number int);
完整脚本
#!/bin/bash
number=100
while [ ${number} -lt 120 ]
do
echo "number is"$number
/usr/bin/expect <<-EOF
spawn mysql -h IP -P 3306 -u root -p123456
expect "*>*"
send "show databases;\r"
expect "*>*"
send "use testserver;\r"
expect "*>*"
send "show tables;\r"
expect "*>*"
send "INSERT INTO testnum values('${number}',123456);\r"
expect "*>*"
send "quit;\r"
EOF
let "number++"
done
这样,就得到一个通过 expect 自动完成 MySQL 数据库交互的脚本。
自动完成与数据库命令的交互操作并批量入库 N 条记录。
启示录
搜索了一下 expect 命令,有不少用它来登录 MySQL 的文章,这么看来它至少可以完成两个自动化功能:
- 如果需要经常访问 Linux 上的 MySQL 数据库,可以写一个 MySQL 自动登录脚本
- 完成数据库的批量操作
如果直接在文件中注明使用 expect 脚本的话,那么就只能通过 spawn 来执行其他命令,否则会报命名不存在,例如:
#!/usr/bin/expect -f
spawn service mongod restart
su elastic
后面一句 su 命令是无法执行成功的,会报命令不存在错误,而且对于指定了 bin 脚本的文件,只能通过 ./文件名的方式来执行,而不能再用 sh xx.sh 的执行了,因为 sh 固定会找 /usr/bin/bash 文件来执行,就不能使用 expect 的命令了。
猜你喜欢
- 2025-07-15 Stellar Repair for MySQL:受损 MySQL 数据库的专业恢复工具
- 2025-07-15 在CentOS7系统源码安装Nginx+MySQL+PHP+Go
- 2025-07-15 linux通过yum安装nginx和mysql(linux在线安装nginx)
- 2025-07-15 Chat to MySQL 最佳实践:MCP Server 服务调用
- 2025-07-15 安装mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
- 2025-07-15 阿里云 RDS MySQL物理备份文件恢复到自建数据库
- 2025-07-15 MySQL 安装全攻略(Windows/Linux/macOS)
- 2025-07-15 使用docker备份mysql数据库(docker 备份 文件夹)
- 2025-07-15 Linux系统安装SQL Server数据库(linux如何安装数据库)
- 2025-07-15 MySQL 8.0——创建并使用数据库、获得数据库和表的信息
你 发表评论:
欢迎- 07-15Rocky Linux Nginx 自动更新免费 SSL,全流程实战
- 07-15nginx-1.22.1在linux服务器上的安装
- 07-15Rocky Linux 9 系统下安装Nginx(在linux中安装nginx)
- 07-15Rocky Linux 9.x 从零安装 Nginx 全流程:源码编译 + dnf 安装方案详解
- 07-15Linux-Nginx-反向代理篇-02(nginx反向代理apache)
- 07-15RockyLinux 9快速部署Nginx+HTTPS(基于DNF安装)
- 07-15Stellar Repair for MySQL:受损 MySQL 数据库的专业恢复工具
- 07-15在CentOS7系统源码安装Nginx+MySQL+PHP+Go
- 最近发表
-
- Rocky Linux Nginx 自动更新免费 SSL,全流程实战
- nginx-1.22.1在linux服务器上的安装
- Rocky Linux 9 系统下安装Nginx(在linux中安装nginx)
- Rocky Linux 9.x 从零安装 Nginx 全流程:源码编译 + dnf 安装方案详解
- Linux-Nginx-反向代理篇-02(nginx反向代理apache)
- RockyLinux 9快速部署Nginx+HTTPS(基于DNF安装)
- Stellar Repair for MySQL:受损 MySQL 数据库的专业恢复工具
- 在CentOS7系统源码安装Nginx+MySQL+PHP+Go
- linux通过yum安装nginx和mysql(linux在线安装nginx)
- Chat to MySQL 最佳实践:MCP Server 服务调用
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)