아래는 내 코드입니다.
#!/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"