【问题标题】:Expect scripting: remote database backup automation期望脚本:远程数据库备份自动化
【发布时间】:2013-08-05 08:37:23
【问题描述】:

我正在寻找一种远程数据库备份自动化。 然后,我遇到了一种常用于管理任务的脚本语言,“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?

【问题讨论】:

    标签: mysqldump expect


    【解决方案1】:

    我不知道您的问题的答案:将exp_internal 1 添加到程序顶部以查看发生了什么。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-29
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2017-08-14
      相关资源
      最近更新 更多