2012-07-04 9 views
0

java의 Runtime.getRuntime.exec ("") 명령에 관해 간단한 질문이 있습니다. Java 명령 프롬프트 종료

나는 SSH를 통해 게이트웨이 컴퓨터에 터널을 만들려고 노력하고 있어요 :

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP 
        + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort; 

Runtime.getRuntime().exec(tunnel); 

코드의이 비트는 명령 프롬프트가 나타납니다 성가신 사실을 제외하고는 제대로 작동합니다.

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP 
        + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort; 

String cmdCommands [] = {tunnel, "exit"}; 

Runtime.getRuntime().exec(cmdCommands); 

그것이 내가 할 또는 더 나은 방법이있는 것처럼 비슷한 방법으로 명령 프롬프트를 닫습니다 가능 :

는 지금은 코드를 실행 한 후 프롬프트를 종료하려고? (이 코드 나던 작업)

+0

코드가 실행 파일 (putty.exe)을 실행 중입니다. 표시되는 명령 프롬프트는 퍼티입니다. SSH 터널을 만들고 싶다면 올바른 라이브러리를 사용해야합니다.이 스레드 http://stackoverflow.com/questions/1677248/simple-ssh-tunnel-in-java – sperumal

+0

...을 참조하십시오. 그런데, 자바 5가 이것을 선호하는 방법은'ProcessBuilder' 클래스를 사용하는 것입니다 (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html) – mazaneicha

+0

ohhh 좋은 생각^^ 전임자도했기 때문에 코드를 사용했지만 여분의 라이브러리가 더 좋게 들립니다. – Mister004

답변

1
당신은 코멘트를 같이하는 대신 직접 퍼티의 실제 SSH 라이브러리를 사용하거나, 그것은 일반적으로 나쁜 년대 exec

Process p = Runtime.getRuntime().exec(cmdCommands); 
InputStream is = p.getInputStream(); 
OutputStream os = p.getOutputStream(); 
os.write("exit\n"); 

의 IO 스트림을 캡처하거나해야합니다

아이디어를 하드 코드로 \ n, 플랫폼 이유로,하지만 당신은 아이디어를 얻을. 또한 올바른 OutputStream을 선택해야합니다. 유용 할 수있는 몇 가지 하위 클래스 (버퍼링 된 등)가 있습니다.

+0

ssh 라이브러리를 사용해 보겠습니다. 빠른 답변 주셔서 감사합니다 ^^ – Mister004