2012-12-10 2 views
0

현재 Java 용 Ganymed-SSH2-Library를 사용하여 ssh-server에서 일부 명령을 실행하려고합니다. 또한 perl 스크립트를 호출해야하기 때문에 Session.execCommand();을 사용할 수 없습니다. "정상적인"unix-commands를 실행하기 때문입니다 (또는 이것이 잘못된 것입니까?). 대신 의사 터미널을 사용해야합니다. 나는 다음과 같은 코드를 실행하면Java Ganymed-SSH - 버퍼에서 읽는 중 멈춤

는 응답 :

session = con.openSession(); 
session.requestPTY("vt220"); 
session.execCommand("/bin/bash"); 
session.getStdin().write("echo test".getBytes()); 
int b = 1; 
InputStream is = new StreamGobbler(session.getStdout()); 
while ((b = is.read()) != -1) { 
    System.out.print((char)b); 
} 
System.out.println("finished"); 

는 다음과 같은 출력 (검열 USERNAME 및 HOST)가 발생합니다 :

echo [email protected]:~ 

# echo test 

하지만 코드가이 시점에서 중지 결코 것 도달 범위 System.out.println("finished");

다음 코드를 실행하면 연결 빌드가 제대로 작동합니다.

session = con.openSession(); 
session.execCommand("ls"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(new StreamGobbler(session.getStdout()))); 
String line = reader.readLine(); 
while (line != null) { 
    line = reader.readLine(); 
    System.out.println(line); 
} 
System.out.println("finished"); 

문제가있는 사람은 누구입니까? 몇 시간 전 Jsch (다른 SSH-Lib for Java)를 사용해 보았지만 동일한 문제가 있습니다.

미리 감사합니다 :)

답변

1

에 나는 문제가 JSch 및 Ganymed에서 오지 것을 생각한다. 다음과 같이하면 어떨까요?

session.getStdin().write("echo test; exit".getBytes()); 
+0

내게 다음과 같은 출력을 주지만, 또한 멈 춥니 다 :'echo test; exitUSER @ HOST : ~ # echo test; exit' – user1571117

+0

Ganymed에 대해 모르겠지만 JSch에서 같은 결과를 얻었습니까? – ymnk

+0

그 중 하나도 작동하지 않습니다 :(이전처럼 응답하지 않습니다. – user1571117