더 구체적으로 말하면, 실제로하고 싶은 것은 두 개의 새로운 터미널을 여는 것입니다. terminal_1에서 나는 ssh @ host1로 가고 program1을 host1로 실행하고 싶다. 터미널 _2에서 ssh @ host2로 이동하고 program2를 host2로 실행합니다. 터미널 1에서 보려는 program1의 출력과 터미널 2에서 볼 수있는 program2의 출력이 필요합니다. 원격 호스트에 새로운 터미널 ssh를 열고 원격 호스트에 프로그램을 실행하십시오. 새로운 열린 터미널에서 볼 수있는 모든 출력
는 (I 텀과 ssh를 @를하게 대접이 두 번째 명령 "& & 자바 echo_1"을 통과하려고 열 관리해야하지만 아무것도 전혀하지 않습니다) 여기를 코드입니다 :
import java.io.*;
public class multi1 implements Runnable {
public void run() {
try {
String ss = null;
Runtime obj = null;
String[] newcmd = new String[]{"/usr/bin/xterm","-hold","-e","ssh [email protected]&&java echo_1"};
Process p = Runtime.getRuntime().exec(newcmd);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((ss = stdInput.readLine()) != null) {
System.out.println(ss);
}
}catch (IOException e) {
System.out.println("FROM CATCH" + e.toString());
}
}
public static void main(String[] args) throws Exception {
Thread th = new Thread(new multi1());
th.start();
//Thread th2 = new Thread(new multi1());
//th2.start();
}
}
echo_1은 오랜 시간 실행되어 이벤트가 도착한 후에 특정 출력을 제공하는 프로그램입니다. 그 출력을 로컬에서 모니터해야합니다. jsch 라이브러리로 가능합니까? 감사합니다 – Andreas
jsch를 사용하면 SSH와 연결하여 출력 및 입력 스트림을 얻을 수 있습니다. 문제가 될 때가 있습니다. –
안녕 Aviram, 작업은 jsch 감사를 사용하여 완료되었습니다! 당신이 솔루션을 가지고 있을지도 모르는 문제가 있습니다. ls 또는 java javaprogram 또는 ./cprogram을 실행하면 in.available> 0이고 출력을 검색하지만 프로그램/usr/local/bin/click_program을 실행할 때 , in.available()은 0이지만 출력은 터미널에 인쇄됩니다. 어떻게 가능합니까 ?? 왜 나는 그 출력을 검색 할 수 없습니까? – Andreas