2011-10-02 4 views
1

여기에 뭔가 빠져 있어야하지만, Ganymed SSH API를 사용하여 "cd/root/some/dir /"과 같은 것을 어떻게 호출해야합니까? Ganymed SSH API를 사용하여 디렉토리 (cd)를 어떻게 변경합니까?

  1. 내가 만든 첫 번째 세션에서 Connection 객체

  2. 을 만들어, 내가 "CD/루트/일부/DIR"만든 두 번째 세션에서

  3. 라고, 나는 "LS했다. " 또는 "./myApp"

즉 didnt 한 일, ganymed 아마 자신의 디렉토리와 각 세션을 시작하기 때문에

그래서 내가 같은 세션에 두 명령을 수행해야합니까? 예 :

session.getStdin().write("cd /root/somedir \n".getBytes()); 
session.getStdin().write("ls . ".getBytes()); 

올바른 방법입니까? 그렇다면 왜 Session.execCommand이 필요한가요?

+0

도움이 될 것입니다

희망을 확인하기 위해 나는이 특정 라이브러리를 사용한 적이 있지만, 한 번 STDIN을 얻기 변수에 다음을 저장하려고 않았다 그걸 써? – AlexR

답변

0

좋아, Ganymed javadoc에 대해 간략하게 살펴 봤지만 직접 시도하지는 않았지만 STDIN에 쓰기 대신 세션 execCommand()을 사용해야한다고 가정합니다. 나는 세션이 원격 쉘에 연결되어 있는지 확신하기 때문에 등 현재 디렉토리 환경 변수를 포함 쉘 상태를 처리

그래서 그냥 다음을 수행

:

session.execCommand("cd /root/somedir \n".getBytes()); 
session.execCommand("ls . ".getBytes()); 

내가이 당신을 위해 작동합니다 희망 . 행운을 빕니다.

+0

Alex,이 질문에 대한 API가없는 해결책은 없습니다 ... API를 몇 주 동안 앞뒤로 건너 왔습니다 ... 제안한 코드는 컴파일되지 않습니다. , 그리고 그것을 고친 후에, Ganymed SSH의 기본 개념에 실패 할 것이다. –

1

session.execCommand("cd /root/somedir ; ls ."); 

처럼, 일부 연구, 나는 "LS"명령과 같은 코드 내에서 "CD"명령을 호출 발견 할 수있는 유일한 좋은 해결책을 수행 한 후 세미콜론은 두 가지를 분리합니다 명령은 모든 bash 코드와 같습니다. 이런 식으로

, 당신은 [session.getExitStatus()] session.getStdIn()에 두 명령을 작성 후 훨씬 더 좋습니다 cdls 명령, 모두의 세션의 결과를 조회 할 수 있습니다 (표준 입력, 당신이 좀 느슨한 모든 능력을 작성 후) ... 종료 상태이 나머지

Eyal 님