パソコンおやじの掲示板
[記事リスト] [新着記事] [ワード検索] [過去ログ] [管理用]

タイトル sudo+rsync+ssh+exceptによるバックアップの自動化
投稿日: 2014/05/13(Tue) 21:03
投稿者Mirage

お世話になります。

先日からファイルのバックアップ処理を自動化させようとしていますが、1週間程奮闘しても成果が上がらず、大変困っています。
詳細な状況を記述いたしますので、お手数ですが、どなたか助けて頂けないでしょうか?



サーバーが2台有り、バックアップ元(192.168.12.9)からバックアップ先(192.168.12.12)にログファイル等のroot権限が必要なファイルを自動的にバックアップさせようとしています。


●1.バックアップ元サーバー:
・CentOS5.5
・rootユーザを無効化しており、一般ユーザ(hogera)をsudoで権限昇格出来るようにしています。

●2.バックアップ先サーバー:
・CentOS5.5
・バックアップ元と同様に、一般ユーザ(hogera)が登録されています。

※また、SSHはどちらのサーバーでもパスワード認証を使用しています。



バックアップ先からsudo+rsyncを使用して、手動で

rsync -avvz -e "ssh -tt" --rsync-path="sudo rsync" hogera@192.168.12.9:/var/log/messages /home/hogera/

とすると、無事にバックアップ元からmessageが取得できます。

また、上記のコマンドをスクリプト化しても、同様にmessageが取得できます。


しかし、expectでパスワード入力処理を自動化したスクリプトを作成し、バックアップ先
で実行すると

protocol version mismatch - is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(69)

というエラーメッセージがコンソールに表示されてしまいます。


スクリプトは以下の通りです。

#!/bin/bash

expect -c "
spawn rsync -avvz -e \"ssh -tt\" --rsync-path=\"sudo\ rsync\" hogera@192.168.12.9:/var/log/messages /home/hogera
expect \"hogera@192.168.12.9's password:\"
send \"[Password]\n\"
expect eof
exit
"

このエラーメッセージの一般的な対処法として、rsyncのオプションにvvを追加
したものを手動で実行し、実行結果から

--server -ulogDtprz . /home/hogera/

等の文字列を抜き出して、バックアップ元の/root/.ssh/authorized_keysに

command="rsync --server -ulogDtprz . /home/hogera/" ssh-dss AAA...

と追加する方法が数多く紹介されていますが、この方法ではSSH接続時に実行可能なコマンドがrsyncに限定されてしまうのではないか(winSCPによる自動ファイルアップロード等、他にSSHが絡む機能も実装予定の為、実行可能なコマンドがrsyncに限定されると困る)?ということを懸念しています。



1.SSH接続時の実行可能コマンド制限の件は、私の思い違いでしょうか?
2.エラーメッセージの対処法は、間違っていないでしょうか?
3.他に良い方法は有りますか?


どうぞ宜しくお願いします。


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ   手動改行 強制改行 図表モード
参照先
暗証キー (英数字で8文字以内)
確認キー
確認キー
投稿する場合は、左に表示されている3文字(英大文字)の確認キーを必ず入力してください。
 (確認キーは表示してから30分間のみ有効です。)
  プレビュー

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 暗証キー