여러 서버에서 명령을 실행해야하는 프로그램이 있습니다. Runtime.getRuntime().exec();
으로 로컬 테스트를했는데 정상적으로 작동했습니다.Java가 원격 서버에 매개 변수가있는 JAR을 실행합니다.
하지만 원격 명령을 실행하려면 일단 작동하지 않습니다. 예를 들어 내가 할 경우
ssh [email protected] 'touch /tmp/hello.txt'
내 터미널에서 작동합니다. 그러나 내 자바 프로그램에서 작동하지 않습니다
Runtime.getRuntime().exec("ssh [email protected] 'touch /tmp/hello.txt'");
당신이 테스트의 목적에 대한 간단한 main.java
에 원격 명령을 실행하는 솔루션 (로그에 대한 필요 및 생산 보안 및 모든)이 있습니까?
감사합니다.
편집는 : 목표는 (로그가 정말 문제가 아니라 더 좋은 것하지 않음)과 같은 매개 변수를 사용하여 JAR를 실행하는 것입니다
귀하의 명령 문자열은 이전 명령 배열로 분할해야ssh [email protected] 'java -jar -Dbroker-ip=10.20.30.41 -Dtopic=topic -Dpartition-number=32 -Dthread=8 -Dsource=/tmp/hour_moves /opt/Produce.jar > /tmp/logThread1 &'
bash 스크립트로 명령을 래핑하고 호출 해 보았습니까? –
예, 작동합니다. 그러나 가능한 경우 로컬 서버에 파일을 작성하지 않고이 작업을 수행하려고합니다. – user1484901
나는'Runtime.getRuntime(). exec ("myscript.sh '");'와 같은 것을 실행하는 것을 의미했다. exec()는 Java에서 이상합니다. 나는 항상이 기사로 돌아 간다 : http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html –