2013-08-05 3 views
0

Я ищу резервную автоматизацию удаленной базы данных. Затем я наткнулся на язык сценариев, который обычно используется для административных задач «Ожидайте скриптов», и я считаю, что это может хорошо служить моей цели.Expect scripting: удаленная автоматизация резервного копирования базы данных

Что бы я хотел сделать, так это то, что я хочу выполнить вход на удаленный сервер, используя следующий сценарий bash из моего локального окна Linux. (предполагается, что все установлено правильно, 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 .......». Он никогда не дожидался завершения процесса, но сразу же покинул оболочку с командной строкой «отправить» exit \ r "'.

что делать, чтобы команда дождалась завершения команды mysqldump и выйти из SSH правильно?

ответ

1

Я не знаю ответа на ваш вопрос: добавьте exp_internal 1 в начало программы, чтобы узнать, что происходит.

Однако, поскольку у вас есть ключи SSH набор, вы на самом деле не нужно ожидать на всех:

ssh [email protected]$addr 'cd /tmp && mysqldump -u root -ppassword my_database > my_database.sql' 
Смежные вопросы