期望带有双引号的 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"

相关内容