Esperar Rsync com aspas duplas

0

Abaixo está o meu código:

#!/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
O script

tem +x de permissão e eu estou executando como abaixo:

~]# ./rsync-backup.sh

Isso me dá a saída abaixo:

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)

Eu tentei adicionar aspas duplas no caminho remoto do rsync, também tentei adicionar barra com aspas simples e duplas. (Apenas muda a mensagem de erro).

Alguém pode me guiar para a direção certa?

    
por Ravi 29.06.2016 / 16:33

1 resposta

1

expect é escrito na linguagem tcl , portanto, as sequências que contêm espaço em branco devem ser citadas com aspas duplas " não aspas simples ' . Então, substitua sua linha de spawn por

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

Além disso, como mencionado por @steeldriver, um retorno de carro é escrito \r , então você provavelmente quer

send "******\r"
    
por 29.06.2016 / 20:59