期待脚本:远程数据库备份自动化

时间:2013-08-05 08:37:23

标签: mysqldump expect

我正在寻找一种远程数据库备份自动化。 然后,我遇到了一种常用于管理任务的脚本语言,“Expect scripting”,我相信它可以很好地满足我的目的。

我想要做的是我想使用本地linux框中的以下bash脚本登录远程服务器。 (假设所有内容都已正确设置,通过生成的密钥对进行SSH身份验证,因此无需密码) 对于最重要的部分,我想发送一个mysqldump命令来为该服务器上的数据库执行备份。

#!/usr/bin/expect

set login "root"
set addr "192.168.1.1"

spawn ssh $login@$addr
expect "#"
send "cd /tmp\r"
expect "#"
send "mysqldump -u root -ppassword my_database > my_database.sql\r"
expect "#"
send "exit\r" 

我在这里找到的唯一问题是在发送“mysqldump -u root .......”之后。 它永远不会等到完成该过程,但是立即使用'send'exit \ r“'命令行退出shell。

我该怎么办才能让它等到mysqldump命令完成并正确注销SSH?

1 个答案:

答案 0 :(得分:1)

我不知道您问题的答案:在程序顶部添加exp_internal 1以查看正在发生的事情。

但是,由于您设置了ssh密钥,因此根本不需要:

ssh $login@$addr 'cd /tmp && mysqldump -u root -ppassword my_database > my_database.sql'