二重引用符付きのRsyncが必要です。

二重引用符付きのRsyncが必要です。

以下は私のコードです。

#!/usr/bin/expect -f
set timeout -1
spawn rsync -arvz -e 'ssh -p 1690' --protect-args --progress /home/pappu/ '[email protected]:/volume1/56 - Backup Server/pappu'
expect "password:"
send "******/r"
expect eof

スクリプトには+x権限があり、次のように実行しています。

~]# ./rsync-backup.sh

それは私に次のような結果を与えます:

spawn rsync -arvz -e 'ssh -p 1690' --protect-args --progress /home/pappu/ '[email protected]:/volume1/56 - Backup Server/pappu'
Unexpected remote arg: '[email protected]:/volume1/56
rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]
send: spawn id exp4 not open
      while executing
"send xxxxxx/r"
      (file "./rsync-backup.sh" line 5)

rsyncのリモートパスに二重引用符を追加し、一重引用符と二重引用符でスラッシュを追加してみました。 (エラーメッセージのみが変更されます。)

ベストアンサー1

expectスペースを含む文字列は、一重引用符ではなく二重引用符で囲む必要があるtcl言語で書かれています。したがって、生成された行を次に置き換えます。"'

spawn rsync -arvz -e "ssh -p 1690" --protect-args --progress /home/pappu/ "[email protected]:/volume1/56 - Backup Server/pappu"

また、@steeldriverが述べたように、キャリッジリターンが書かれているので、\r次のことをしたいかもしれません。

send "******\r"

おすすめ記事