원격 (Linux) 시스템에서 명령을 쉘 아웃하기 위해 Java 프로그램을 실행하려고합니다. putty.exe를 실행하여 SSH 키를 사용하여 컴퓨터에 연결할 수 있습니다. 그러나 "bash" "ps-ef"또는 "ls -la"와 같은 실제 명령을 실행할 수는 없습니다. 현재 Java 런타임 .exec을 사용하고 있는데 java.lang.ProcessBuilder
을 사용하면 확실하지 않은가요? 내가 도대체 뭘 잘못하고있는 겁니까 ? 어떤 도움/지침은 크게Windows 컴퓨터에서 쉘 명령을 실행하는 Java 프로그램
package hello;
import java.io.*;
public class RuntimeExample {
public static void main(String args[]) throws IOException {
try{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(new String[]{"C:\\Users\\yky90455\\Desktop\\putty.exe","[email protected]","bash", "ps -ef"});
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running the command is:");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
왜 퍼티를 사용하는 대신 SSH 라이브러리를 사용하지 않습니까? – BackSlash
Java의 전체 요점은 OS에서 추상적입니다. 네이티브 명령을 호출하기 전에 항상 플랫폼 독립적 인 대안을 검색하십시오. 귀하의 예제에서 Java 용 SSH 구현 (예 : [sshj] (https://github.com/hierynomus/sshj))을 사용하십시오. –
빠른 응답을 보내 주셔서 감사합니다. 나는 sshj와 Jsch를 조사 할 것이다. –