2013-08-05 122 views
0

我正在尋找一種遠程數據庫備份自動化。 然後,我遇到了一種腳本語言,通常用於管理任務「預計腳本」,我相信它可以很好地滿足我的目的。預期腳本:遠程數據庫備份自動化

我想要做的是我想從我的本地Linux機器上使用以下bash腳本執行登錄到遠程服務器。 (假設所有設置都已正確,通過生成的密鑰對進行SSH身份驗證,所以不需要密碼) 對於最重要的部分,我想發送一個mysqldump命令爲該服務器上的數據庫執行備份。

#!/usr/bin/expect 

set login "root" 
set addr "192.168.1.1" 

spawn ssh [email protected]$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

我不知道你的問題的答案:添加exp_internal 1到程序的頂部,看看發生了什麼。

但是,因爲你必須設置SSH密鑰,你真的不需要指望在所有:

ssh [email protected]$addr 'cd /tmp && mysqldump -u root -ppassword my_database > my_database.sql'