このスレッドはクローズされています。記事の閲覧のみとなります。
  
    
        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" 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.他に良い方法は有りますか?
 
  どうぞ宜しくお願いします。
          
          
       | 
    
  
■ コンテンツ関連情報
  
    
        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でどうこうするのは諦めて、秘密鍵認証(パスフレーズ無し)に切り替えようと思います。
          
        
       | 
    
  
■ その他