2012-11-01 2 views
0

와 요청의 에코을 포함, 아래 참조 :pexpect 응답이 내가 전에 <code>pexpect</code> 및 <code>sendline</code>을 사용했지만, 이번에는 내가 <em>파이프</em> 및 <em>와일드 카드</em>와 더 이상 명령을 실행하고 <cr>

commandToRun='/bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"' 
returnedString = sendLine(commandToRun) 

내 수업을 sendLine 함수가있는 코드는 다음과 매우 비슷합니다.

self.connection = pexpect.spawn('%s %s' % (protocol, host)) 
    self.connection.setecho(False) 
    self.connection.setwinsize(300, 300) 

하지만 코드를 실행하면 그는 returnedString뿐만 아니라 요청을 포함하는 응답을 포함합니다. 내가 returnedString를 인쇄하면

이 다음과 같아야 :

응답이 같은 버퍼에 요청을 포함 않습니다 왜
bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"<cr> 
100<cr> 
102<cr> 
103<cr> 

? 이미 setecho(False)으로 설정되어있어 도움이되지 않습니다.

EDIT : (올바른 수정) 응답에서 모두 수동으로 제거하고 요청을 제거해야합니다. 그래서 setecho (False)는 여전히 아무것도하지 않습니다!

+0

무엇이'sendLine()'입니까? spawn.sendline() 메서드는 쓰여진 바이트 수를 반환합니다. – jfs

+0

@ J.F.Sebastian, 위 코드를 편집했습니다! – theAlse

+0

문제를 재현하는 최소한의 (하나의 명령 만 실행) 완전한 (독립 실행 형) 예제를 제공 할 수 있습니까? – jfs

답변

1

나는 이것에 대한 해결책을 찾았습니다. 당신이 bash -c을 '다음 bash는 echo의 설정 사용하여 쉘에서 명령을 실행, 그래서 기본적으로

commandToRun = 'bash -c "less /readfile | tail -4"' 
yourConnection.sendLine("stty -echo") 
commandResult = yourConnection.sendLine(commandToRun) 
self.sendLine("stty echo") 

을 (응답 에코를 끕니다).