2012-10-05 2 views
0

에서 나는 만약 내가 두 가지 방법으로 원격 스크립트를 실행 할 수 있어요한다. 우선 (간접) #ssh 세컨드 (SSH 접속 후) #ssh # #exit실행 원격 리눅스 스크립트 나 원격 컴퓨터

I 채널 전송의 종류에 약간 차이가 있다고 판단 (다시 단말 호스트). 즉, 원격 스크립트 실행을 위해 주먹을 사용할 때 스크립트 출력은 호스트 mashine이 아니라 두 번째 방법처럼 원격으로 인쇄해야합니다.

uturksat1과 uturksat2 두 대의 기계가 있습니다. uturksat2에는 리눅스 스크립트 (/tmp/runScript.sh)와 Java 클래스 Provider가 있습니다. Linux 스크립트는 소켓을 연 다음 수신하는 Provider java 응용 프로그램을 실행합니다. uturksat1 시스템에서

#!/bin/bash 
echo "Provider" 
$JAVA_HOME/bin/java -cp /tmp Provider& 
$JAVA_HOME/bin/java -version 
rm /tmp/pid 
echo "$!"> /tmp/pid 
echo "Provider-finish" 
exit 0 

, 나는 다음과 같이 입력이있을 때 자동으로 명령 프롬프트를 반환하지 않습니다

[email protected]:/tmp# ssh uturksat2 /tmp/runScript.sh 
Provider 
java version "1.6.0_29" 
Java(TM) SE Runtime Environment (build 1.6.0_29-b11) 
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) 
Provider-finish 
Waiting for connection 

유형 다음 명령은, 내가

를 반환 Ctrl + C를 눌러 필요가있다 명령

[email protected]:/tmp# ssh -t uturksat2 /tmp/runScript.sh 
Provider 
Waiting for connection 
java version "1.6.0_29" 
Java(TM) SE Runtime Environment (build 1.6.0_29-b11) 
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) 
Provider-finish 
Connection to uturksat2 closed. 
[email protected]:/tmp# 

제공자 응용 프로그램은 I 포트 200에 텔넷 통해 테스트 할 수 있습니다, 실행되지 않습니다 4 공급자가 듣고 있습니다.

telnet uturksat2 2004 

마지막으로 마지막 문제는 공급자 원격 리눅스 스크립트 실행의 첫 번째 방법으로,의 log4j LOF 파일이 생성되지는 internall 로그를 유지하기 위해 log4j를 사용하지만, 두 번째 방법으로 작성됩니다.

+0

정확하게 당신이 시도 명령, 당신이있어 출력하고, 원하는 출력을 설명해주십시오. 'ssh remotehost prog arg'는'argg'를 사용하는'prog'를'remotehost'에서 실행하지만 원격 stdout과 stderr는 로컬로 리디렉션합니다. http://support.suso.com/supki/SSH_Tutorial_for_Linux 또는'ssh'에 대한 다른 문서를 읽으십시오. 당신은'ssh -v'를 실행하여 무슨 일이 일어나고 있는지 이해할 수 있습니다. –

답변

0

:

ssh -t second script 

Update.1

당신이 백그라운드에서 script를 시작하고 ssh 세션을 남겨 둡니다 나는 다른 설명으로 같은 질문을 공개했다. 그것은 해결되었습니다. 내 동기를 높이는 조언에 감사드립니다. 이미 알고있는 솔루션입니다. Run remote java server in linux script

2

이들 두 명령의 유일한 차이점 :

ssh second 
script 
exit 

ssh second script 

두 번째 경우에는, 스크립트는 단말기없이 시작한다는 것이다. 두 번째 경우에 터미널을 강제로 당신은 -t 지정해야합니다

ssh second 'nohup script </dev/null> nohup.out 2>&1 &' 
+0

테스트를 마쳤지 만 작동하지 않습니다.나는 나의 질문을 자세하게 설명하여 업데이트했다. –

+0

모든 것이 제대로 작동합니다. 결국 어떤 결과를 얻고 싶습니까? –

+0

내가 설명한대로입니다. 그것은 내가 원하는 것을하지 않습니다. 원격 시스템에 수동으로 연결된 것보다 아무런 차이없이 원격 호스트에서 intalled 된 응용 프로그램을 실행하고 싶습니다. –