큰따옴표가 있는 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"

관련 정보