2013-05-02 2 views
0

ExpectJ Java 프로그래밍을 처음 사용합니다. 나는 항아리를 다운로드 받았고 약간의 send()expect() 메쏘드를 할 수있었습니다. send()은 콘솔에서 명령을 실행하고 expect()은 모든 프롬프트를 식별하므로 입력을 제공 할 수 있습니다. 오직 독서 만 있으면 다른 정보가 아닌 프롬프트가 있다는 것을 기대할 수 있습니다. 예를 들어, spawn.send("ls")을 실행하고 모든 파일 이름 목록을 얻으려는 경우 특정 동작이 가능합니까?호출시 출력 텍스트 읽기 spawn.send()

정상적으로 출력을 읽을 수 있도록 spawn.send ("ls")의 예를 들어 볼 수 있습니다. 그러나 나는 아직도 프롬프트를 얻기에 어려움을 겪고 있어요 그것은 나는 또한 자바와 매우 새로운 오전 ExpectJ.Spawn 클래스 의 방법 중 하나입니다,하지만 난 출력을 가지고 :

답변

0

당신은 참으로 출력 스트림을 캡처 할 수 있습니다 내가 유닉스에서 여분의 제어 문자를 얻었으므로 두 번째 System.out.println (sh, expect 부분) 이후에 오는 것을 신뢰하지 말아라. 출력이 잘 동작하고, 원할 경우 변수에 설정하면된다. 스윙, 청취자와 함께 텍스트 영역으로 보냅니다.

BTW! 이 피투성 인 제어 문자가 없으면 기대를하는 법을 안다면, 1m, 34 [001 등등, 당신의 의견을 환영합니다.

import expectj.ExpectJ; 
    import expectj.Spawn; 

    public class myExpectinator { 

     public myExpectinator(){ 
     } 

     public void connect(){ 
      try { 
       ExpectJ ex = new ExpectJ(10); 
       Spawn sh = ex.spawn("10.10.10.10", 22, "name", "password"); 

       System.out.println(sh.getCurrentStandardOutContents()); 
       System.out.println(sh.getCurrentStandardErrContents()); 
       sh.expect("~ $"); 
       sh.send("ps\n"); 
       System.out.println(sh.getCurrentStandardOutContents()); 
       //sh.expectClose(); 
       sh.stop(); 
      } 
      catch(Exception e) { 
       System.out.println(e);   
      } 
     } 
    }