2012-09-21 2 views
0

winpexpect를 사용하여 터미널을 생성하려고 할 때마다 (예 : openssh, ssh). 내가한다면 winpexpect.winspawn('ssh ...') "stdin이 터미널이 아니기 때문에 가상 터미널이 할당되지 않습니다."라는 메시지가 나타납니다. " winpexpect.winspawn('ssh -t -t ...')을 사용하여 터미널을 강제로 실행하면 ssh 클라이언트가 실제로 서버에 연결되어 있어도 읽기 버퍼에 아무 것도 얻지 못합니다. 다른 대화 형 터미널에서도 마찬가지입니다. 응답이 없으며 읽기 버퍼에 아무 것도 나타나지 않습니다. 그러나 터미널과 같은 명령은 ping winpexpect와 같이 작동합니다.CPython은 Windows에서 스폰 된 tty 터미널과 잘 상호 작용하지 않습니다.

실제로 작동하는 것으로 확인 된 것은 putty의 plink.exe, winpexpect.winspawn('plink ...'을 사용하고 있습니다. 이것은 putty.exe와 동일하지만 터미널 에뮬레이션을하지 않기 때문에 원시 텔넷/암호 해독 된 ssh 데이터 만 얻습니다. 그러나 이것은 실제로 이상적인 솔루션이 아닙니다.

나는 spawner를 얻는 방법에 정말로 집착하고있다/창문에 터미널로 작동하는 라이브러리를 기대한다! 심지어 expectJ, 그냥 순수한 자바를 사용하여 시도하고, 그 역시 동일한 문제가 있습니다.

+0

대신 paramiko를 사용하는 것에 대해 생각해 보셨나요? –

+0

pty가 Windows에 고유하지 않은 것과 관련이있을 수 있습니다. 어떻게 구현하는지 모르겠지만 가장 가능성이있는 것은 그들이 어떤 방식으로 그들을 시뮬레이트해야한다는 것입니다. os.openpty 함수는 Windows에도 존재하지 않습니다. 그래서 나는 그것이 "dicy"라고 기대할 것입니다. Cygwin을 실행하고 있습니까? 또는 원시 Python 빌드를 사용하고 있습니까? – Keith

+0

paramiko ... 많은 재 작성이 필요합니다. telnetlib를 사용하여 작성된 것을 옮기기 위해 노력하고 있는데, 이미 telnetlib 메소드를 기대하고 있습니다. 내 목표는 winpexpect를 사용하여 ssh 클라이언트를 호출하는 것입니다. 이는 매우 직접적인 접근 방식이며 다시 작성하지 않아도됩니다. – Zombies

답변

0

winpexpect/plink의 문제점은 무엇입니까? winpexpect-1.5에서 많은 문제를 수정 한 분기 된 winpexpect을 사용해보십시오

+0

plink는 들어오는 터미널 데이터를 에뮬레이션하지 않습니다. 좀 지저분 해. – Zombies

관련 문제