リモート データベース バックアップの自動化のようなものを探しています。その後、管理タスクに一般的に使用されるスクリプト言語「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"」コマンド ラインでシェルをすぐに終了しました。
mysqldump コマンドが終了して SSH から適切にログオフするまで待機させるにはどうすればよいですか?