나는 ssh 쉘을 통해 rsync를 처리 할 것을 기대하지만 사용하지 않으려 고 노력하고있다.
내 rsync 명령을 실행하면 작동합니다 (여기 단순화) : 암호를 입력하라는 메시지가 나타나고 파일을 서버에 복사합니다.
rsync -e ssh -<other_params>
그런 다음 그것을 예상에 포함 시키면 :
expect -d -c "spawn rsync -e ssh -<other_params>" -c "expect password:" -c "send mypass\r"
프로그램이 제대로 실행되지 않고 프로그램이 존재하며 파일이 복사되지 않습니다. 디버그 모드조차도 많은 단서를 제공하지 않습니다.
내 생각에 rsync는 ssh 프로세스를 생성하고 ssh 프로세스는 상호 작용할 필요가 있지만 send는 rsync 프로세스 ID를 가져 와서 거기에 입력을 보내는 것입니다.
이견있는 사람?
답변
이 문제에 대한 대답은 expect 스크립트의 끝에 wait 명령을 추가해야한다는 것이 었습니다. 그것은 질문에 나와 있듯이 작동했지만 암호를 보내고 즉시 프로세스를 종료했습니다. 대기를 추가하면 rsync 프로세스가 완료 될 때까지 대기합니다.
수정 된 버전 :
expect -d -c "spawn rsync -e ssh -<other_params>" -c "expect password:" -c "send mypass\r" -c "wait"