Linux下后台程序完成自动输入密码等交互行为的例子
今天要开发一个定时任务,然后加入cron列表中。但是有个问题摆在眼前,脚本的执行中需要输入数据库密码:
- mysql -u root -p << SQL
- use db;
- set names utf8;
- `cat task.sql`
- SQL
运行上述代码后,会提示:
- Enter password:
经过搜索,发现expect可以帮助我们完成这件事情:
将上述代码保存到一个文件中:db.sh,并且编写如下代码:
- #!/usr/bin/expect -f
- spawn db.sh
- expect "Enter password: "
- send -- "password\n"
- interact
那么我们运行之后,就会进入数据库交互接口。
第一行指示了这个脚本要用哪个程序来运行;
第二行是重点,在EXPECT下启动了一个我们要执行的程序;
第三行也是重点,我们要告诉expect,当什么信息出现时需要expect帮助我们完成交互;
第四行就是出现输入密码的提示时,要发送的内容;
第五行的意思是保持交互,不要退出。如果没有这一句,脚本成功登录数据库后,会立即退出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2015-07-01 Linux使用Shell脚本实现ftp的自动上传下载