예상 유틸리티가 생성 한 프로세스가 하위 프로세스를 생성하는 경우를 처리 할 수 ​​있습니까?


1

나는 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를 가져 와서 거기에 입력을 보내는 것입니다.

이견있는 사람?


1
공개 키 / 암호가없는 로그인을 위해 ssh를 설정할 수 있습니까? 그렇다면 기대를 없앨 수 있습니다. 그렇지 않다면 파이프가 아닌 pty로 서브 프로세스를 생성 해보십시오 (파이프 라인이 수행중인 경우).
Keith

답변:


0

이 문제에 대한 대답은 expect 스크립트의 끝에 wait 명령을 추가해야한다는 것이 었습니다. 그것은 질문에 나와 있듯이 작동했지만 암호를 보내고 즉시 프로세스를 종료했습니다. 대기를 추가하면 rsync 프로세스가 완료 될 때까지 대기합니다.

수정 된 버전 :

expect -d -c "spawn rsync -e ssh -<other_params>" -c "expect password:" -c "send mypass\r" -c "wait"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.