以下は私のコードです。
#!/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"