perl Net :: SSH2 v0.48을 사용하고 있으며 stdin에서 입력을 읽는 원격 스크립트를 실행하려고합니다. 이 연결의 채널은 특정 요구 사항에 vt100 pty를 사용합니다. stdin에 데이터를 쓰고 난 후에도 $channel->send_eof();
라고합니다. 그러나 원격 스크립트는 EOF 문자를 전혀받지 못하는 것 같습니다. 원격 스크립트는 파이썬에 있고 sys.stdin.read()
과 같은 stdin에서 읽기 때문에 EOF를 얻을 때까지 중단됩니다. 이 문제는 단순히 pty를 비활성화하거나 EOF 문자 인 입력 페이로드가있는 chr(4)
을 추가 할 때 해결됩니다.pty 모드 및 EOF에서 Perl Net :: SSH2
질문 : 어떤 생각이 왜 send_eof()
- 작동하지 않습니다?
- 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
- pty를 사용하는 경우
send_eof()
이 필요하지 않다고 가정 할 수 있습니까?
P. 프로덕션 코드가 너무 복잡하여 문제를 설명 할 수 없기 때문에 코드 스 니펫을 포함하지 않으며 최소 코드의 작업 버전을 준비하는 데 약간의 시간이 걸립니다. 하지만 곧 코드 샘플로 내 질문을 업데이트하려고 노력할 것입니다.
버전 0.48은 상당히 오래되고 버그가 있습니다. 최신 버전을 사용해야합니다. – salva