はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 質問掲示板

 このスレッドはクローズされています。記事の閲覧のみとなります。

 sudo+rsync+ssh+exceptによるバックアップの自動化
日時: 2014/05/13 21:07
名前: Intoruder

お世話になります。

先日からファイルのバックアップ処理を自動化させようとしていますが、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" [email protected]:/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¥"  [email protected]:/var/log/messages /home/hogera
 expect ¥"[email protected]'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.他に良い方法は有りますか?


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

Page:  [1]

■ コンテンツ関連情報

 Re: sudo+rsync+ssh+exceptによるバックアップの自動化 ( No.1 )
日時: 2014/05/20 13:53
名前: Johann

Expectは処理が難しいのでおすすめしません。
sudoersを弄って、特定のコマンドだけパスワード無しで実行できるようにするのが良いと思います。
メンテ
 Re: sudo+rsync+ssh+exceptによるバックアップの自動化 ( No.2 )
日時: 2014/05/20 15:55
名前: Johann

ちなみにssh接続はパスワード認証ではなく秘密鍵認証にしましょう。こちらもパスフレーズを設定しなければExpectを使って煩雑な事をする必要はありません。
メンテ
 Re: sudo+rsync+ssh+exceptによるバックアップの自動化 ( No.3 )
日時: 2014/05/20 20:42
名前: Intoruder

ご回答ありがとうございます。

ごもっともです。
expectでどうこうするのは諦めて、秘密鍵認証(パスフレーズ無し)に切り替えようと思います。
メンテ

Page:  [1]

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.