3

我正在尝试将争论传递给要在远程机器上执行的本地脚本。该脚本工作正常,因为我已经测试过它手动传递变量。我正在尝试为此使用 plink。我接受用户名(arg 要传递给脚本),并需要通过 plink 将其与脚本一起发送。我正在使用的命令是:

plink.exe ubuntu@192.168.198.128 -m "myLocalScript.ksh"   

我也试过:

plink.exe ubuntu@192.168.198.128 -m "myLocalScript.ksh %username%"   

plink.exe ubuntu@192.168.198.128 -m %username% < "myLocalScript.ksh"   

我已经尝试过输入参数,并将它们添加到命令中的各个位置等。有谁知道我如何实现这一点?

编辑:我使用的是 cmd.exe 而不是 cygwin。他们 -m 选项执行以下操作:

-m file   read remote command(s) from file
4

1 回答 1

1

-m选项没有传递属性的机制,它只是按原样运行文件。问题是您的 korn shell 脚本在本地端没有解释器,因此在您的 Windows 端没有此机制,但请尝试以下操作:

plink ubuntu@192.168.198.128 "tr -d '\r'| ksh -s %username%" < myLocalScript.ksh 

更好的是让主调用更具可读性:

call :remotecmd ubuntu@192.168.198.128 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

该命令现在被概括为处理任意数量的附加开关。

于 2013-03-22T16:11:21.757 回答