2011-07-27 3 views
1

: VisualVM over ssh쉘의 질문에 다음과 같은 맥락에서

나는 하나의 스크립트에 2 개 다음 명령을 실행하려고이 같은 두 명령이 작동하지 않습니다 갖는

ssh -D 9696 [email protected] 
/usr/bin/jvisualvm -J-Dnetbeans.system_socks_proxy=localhost:9696 \ 
    -J Djava.net.useSystemProxies=true 

ssh 명령 시작에 있기 때문에 대화 형 모드이므로 VisualVM은 ssh가 닫힌 후 ('exit'로 명시 적으로) 시작됩니다.

이 문제를 해결하는 좋은 방법은 무엇이 있을까요?

추신. 나는 맥 OS X의를 실행하고

+0

그러면 정확하게 jvisualvm 명령을 실행 하시겠습니까? –

+0

ssh 명령은 JVisualVM에서 사용하는 일종의 터널을 만듭니다. 그래서 저는 동시에 말할 것입니다. – Nikko

+0

저는 전문가가 아닙니다. ssh 명령이해야 할 것은 무엇입니까? 백그라운드에서 실행하는 것이 도움이 될까요? –

답변

1

시도 :

ssh를 [email protected] '는/usr/빈/jvisualvm -J-Dnetbeans.system_socks_proxy = 로컬 호스트 : 9696 -J Djava.net.useSystemProxies = TRUE '

+0

ssh의 대상 호스트에서 jvisualvm을 실행하려고하지 않습니까? (내 의도가 아닌) – Nikko

0

올바르게 사용 사례를 이해하면 ssh 연결로 포트 전달을 설정하고 두 번째 명령이 localhost에서 전달 된 포트를 사용하는 localhost에서 실행됩니다. 이 문제를 해결하기 위해 -f 또는 -n 옵션을 ssh에 사용할 수 있습니다. 그러나 원격 호스트에서 명령을 실행해야합니다. 당신은 echo &> /dev/null 같은 위조 명령을 사용할 수 있습니다.

편집 : 우리가 상호 작용하고 있다는 닫을 수 있도록

ssh -f -D <port> remotehost <dummy_program_that_doesnt_quit>

+0

문서에 따르면 암호가 필요할 때 -n 옵션을 사용할 수 없습니다 (제 경우) – Nikko

+0

따라서 -f 또는 -n 옵션을 사용했습니다. ;) 대안으로 ssh 키를 설정할 수도 있습니다. – suvayu

0

이 가장 SSH 키와 screen를 사용하여 수행됩니다 :이 같은

뭔가 순진한 테스트에서 일 듯

SSH 세션.

나는 또한 jvisualvm이 터미널을 제어하므로 종료 할 때 화면 세션을 정리합니다. jvisualvm이 터미널에서 분리되면 스크립트는 즉시 jvisualvm이 실행되는 동안 screen 세션 정리를 시작합니다.

ssh-add .ssh/key 
screen -dmS sshproxy ssh -i .ssh/key -D 9696 [email protected] 
/usr/bin/jvisualvm -J-Dnetbeans.system_socks_proxy=localhost:9696 \ 
-J Djava.net.useSystemProxies=true 
screen -r -d sshproxy -X quit 
관련 문제