batch-file - 将参数从命令提示符传递到远程 ubuntu 机器

标签 batch-file ksh putty plink

我正在尝试将参数传递给要在远程计算机上执行的本地脚本。 该脚本工作正常,因为我已经测试过它手动传递变量。 我正在尝试为此使用 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

最佳答案

-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

该命令现在已通用化以处理任意数量的附加开关。

关于batch-file - 将参数从命令提示符传递到远程 ubuntu 机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363360/

相关文章:

batch-file - 如何在不基于系统时钟的CMD中生成随机数

batch-file - 使用 .bat 将文件复制到另一个位置

batch-file - 从批处理文件运行 telnet

linux - svn合并问题(svn的3个级别)

batch-file - 如何在文件夹和子文件夹中的所有 Jpeg 图像上运行 guetzli

bash - 当今最好的(可移植和可维护的)Shell 脚本语言是什么?

linux - 如果出现问题,如何让 ksh 脚本自行终止?

linux - 需要命令或脚本从 Unix/Linux 中的文件段落中仅获取特定行

ssh - OpenSSH ProxyCommand 的等效 PuTTY 配置(两个不同的 .pem/ppk 文件)

linux - 使用 grep 命令查找包含以文件名字符开头的文本的文件