2010-03-17 2 views
0

이 이봐, 난 원격 리눅스 서버에서 명령을 실행하고 처리를 위해 출력을 반환 자바 프로그램을 구축하려고 시도하는 다음과 같은 문제로 실행 한 Cygwin에서... 보내고받을 여러 SSH 명령을 자바 런타임을 통해 및

는 기본적으로 나는 SSH 클라이언트와 Cygwin에서 설치하고 다음을 수행 할있다 :

열기 Cygwin에서,

보내기 명령 "사용자 @의 IP";

출력을 반환합니다.

보내기 명령 "password";

출력을 반환합니다.

다른 여러 명령 보내기

출력을 반환합니다.

... 등 ... 지금까지

:

프로세스 PROC = Runtime.getRuntime() 간부. ("C :/전원 앱/Cygwin에서/Cygwin.bat");

나는 다음 단계를 시도하는 방법에 관해서는 손해를보고있다.

어떤 도움이 필요합니까?

답변

1

빠른 길 : cygwin을 사용하지 마십시오. 로그인 정보와 명령을 ssh에 대한 인수로 전달하십시오.

더 좋은 방법 : 오픈 소스를 설치하고 사용하고 매우 성숙한 Sun Grid Engine을 사용하고 Java 용 DRMAA 바인딩을 사용하여 명령을 실행하십시오. 스크립팅 언어로 전환하는 것도 고려해 볼 수 있습니다 (본인은 작업과 같은 스크립트입니다). DRMAAPerl이있는 경우 Rubyother bindings도 있습니다.

1

또한 가용 스루풋을 사용할 수 가용 스루풋 루트 @ MyServer를 -pw passw의/etc/백업/할 - : Download here

당신은 같은 명령을 사용할 수 있습니다 link here

지침의 좋은 세트가있다 backup.sh

+0

모니터에 로그인해야하고 SSH에서 외부 액세스를 허용하지 않는 다른 서버에 로그인해야한다는 점을 제외하면 이상적입니다. – Moustachio

1

java에서 ssh 구현을 사용하십시오. 2 년 전 가니메데를 사용 했었는데 지금은 더 나은 대안이 있습니다. (?)

가니메데를 사용하면 읽을 입력 스트림과 기록 할 출력 스트림을 얻을 수 있습니다.

입력 스트림에서 LineInputReader를 만들고이를 사용하여 원격 서버의 출력을 나타내는 문자열을 읽을 수 있습니다. 그런 다음 regexp Pattern/Matcher를 사용하여 응답을 구문 분석하십시오.

출력 스트림에 PrintWriter를 만들고 println()을 사용하여 명령을 보냅니다.

간단하고 사실 꽤 강력합니다 (정규식을 알고 있다면 ... 올바른 시행을 위해 시행 착오가 필요할 수도 있습니다 ...)

관련 문제