2013-01-16 4 views
3

원격 컴퓨터에서 실행될 로컬 스크립트에 arguements를 전달하려고합니다. 변수를 수동으로 테스트하여 스크립트가 올바르게 작동합니다. 나는 이것을 위해 plink를 사용하려고합니다. 사용자 이름 (스크립트로 전달할 arg)을 가져 와서 plink를 통해 스크립트와 함께 보내야합니다. 내가 사용 명령은 다음과 같습니다명령 프롬프트에서 원격 우분투 컴퓨터로 인수 전달

plink.exe [email protected] -m "myLocalScript.ksh" 
나는 또한 시도

:

plink.exe [email protected] -m "myLocalScript.ksh %username%" 

plink.exe [email protected] -m %username% < "myLocalScript.ksh" 

내가의 인수를 배관하고 명령에 다양한 장소에 추가 해봤 등 사람을합니까 내가 어떻게 이걸 이룰 수 있는지 알아?

편집 : 나는 이것을 cygwin 대신 cmd.exe에서 사용하고 있습니다. 그들은 옵션은 다음을 수행 -m :

-m file read remote command(s) from file 
+0

또는 print -'$ {. sh.version}'이 작동하지 않는 경우. 행운을 빕니다. – shellter

+1

'plink.exe'와'% username %'은 당신이 윈도우 기반의 cmd-line을 사용하고 있다는 것을 의미합니까? cgywin 또는 cmd.exe를 사용하고 있습니까? ''myLocalScript.ksh ''를 fileName (뒤에 ""char)과 함께 사용하지 않는 한,''plink' 로의 방향 전환은 실패 할 것입니다. 그게 오타라고 생각해? '-m' 인수가하는 것을 생각 나게하기 위해 글을 편집 해보십시오. 'cmd.exe' sytnax는 일반적으로'/ m'이거나,'-m'을 사용하여 OK라고 말하는 의사가 있습니까? 또한 이것을 테스트 할 수있는 가장 간단한 테스트 스크립트를 만드십시오. 아마 스크립트 내에서'ls'를 사용할 수도 있습니다. 행운을 빕니다. – shellter

+0

안녕하세요 대피소, 나는 질문을 명확하게하기 위해 편집했습니다. – Cen92

답변

1

-m 옵션을 전달하는 메커니즘이기 때문에 그냥 그대로 파일을 실행 속성이 없습니다.

plink [email protected] "tr -d '\r'| ksh -s %username%" < myLocalScript.ksh 

더 나은 아직 주요 통화를 더 읽기 쉽게 :

call :remotecmd [email protected] myLocalScript.ksh %username% 


exit /B 
:remotecmd 
    setlocal 
    for /f "tokens=2,*" %%i in ("%*") do set options=%%j 
    plink %1 "tr -d '\r'| ksh -s %options%" < %2 
    endlocal 
exit /B 
문제가 당신의 창 끝이에 대한 메커니즘이 없다하지만이 시도 할 귀하의 Korn 쉘 스크립트가 로컬 결국에는 통역이없는 것입니다

이 명령은 추가 스위치를 여러 개 처리하도록 일반화되었습니다.

관련 문제