expect中interact和expect eof使用的一些小问题

在设置数据库自动备份时,需要自动输入密码,使用了expect命令。

第一版设置两个脚本为。
/home/ccds/mysql.sh

#!/usr/bin/expect -f
spawn /home/ccds/mysql1.sh
set pass pass
expect "password"
send "$pass\n"
interact

/home/ccds/mysql1.sh

#!/bin/bash
mysqldump -uroot -p test> /home/ccds/ccds/`date +%Y%m%d-%T`_ccds.sql

上面这版使用./mysql.sh执行成功,放在计划任务里面时,可以建出sql文件,但是文件为空。

第二个版本
/home/ccds/mysql.sh

#!/usr/bin/expect -f
spawn /home/ccds/mysql1.sh
set pass pass
expect "password"
send "$pass\n"
interact
expect eof

上面这版使用放在计划任务里面执行功,使用./mysql.sh执行时报expect: spawn id exp4 not open错误。
interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。
expect eof 结束expect匹配。
一般为远程连接时,连接中断会报此错。在此处出现理解为interact已经退出expect捕获信息了,再次执行expect eof即会报错。

最终版

#!/usr/bin/expect -f
spawn /home/ccds/mysql1.sh
set pass pass
expect "password"
send "$pass\n"
expect eof
#interact

经测试,都可以使用。
问题参考

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值