• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[bash] rsync データバックアップ)

[bash] rsyncデータバックアップ - SSHログイン時のエスケープができない

このQ&Aのポイント
  • rsyncコマンドを使用してローカルサーバ(A)のデータをリモートサーバ(B)にコピーする際、SSHログイン時のエスケープがうまくできずにエラーが発生しています。
  • シェルの中での実行結果を見ると、シングルクォーテーションのエスケープができていないようです。
  • 複数の書き方を試してみましたがうまくいかず、どのように書けばSSHログインをしてサーバーBにデータを送れるようになるかわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • freetaka
  • ベストアンサー率53% (106/197)
回答No.1

次の1行のダブルコーテーションをシングルに変更 expect -c " ↓ expect -c ' 次の1行を変更 expect "root@BのIPアドレス'\''s password:" ↓ expect "password:" send "パスワード" に改行を追加し下に interact を追加して シングルコーテーションでしめる まとめるとこんな感じ expect -c ' spawn rsync -auvze "ssh -p 10022" /tmp/ root@BのIPアドレス:/backup/ expect "password:" send "パスワード\n" interact ' exit 0 ちょっと僕のと環境がちがうと動作しないかもしれませんが もう1つこんなやり方もあります which expect で expectを調べておいて1行目に指定 #!/usr/bin/expect set timeout 10 spawn rsync -auvze "ssh -p 10022" /tmp/ root@BのIPアドレス:/backup/ expect "root@BのIPアドレス's password:" send "manage\n" interact これなら expect "root@BのIPアドレス's password:" がそのまま使えると思います それでいてエスケープ処理いらないです 以上参考までに

The-Key
質問者

お礼

回答ありがとうございます! 早速上の方法でやってみたところ、無事バックアップの取得が出来ました。

その他の回答 (1)

  • freetaka
  • ベストアンサー率53% (106/197)
回答No.2

すいません。テスト環境のパスワードはいってました(笑) send "manage\n" ↓ send "パスワード\n"

関連するQ&A