【问题标题】:How to pass argument to PuTTY commands file如何将参数传递给 PuTTY 命令文件
【发布时间】:2016-07-20 01:16:46
【问题描述】:

我有一个批处理文件,它启动 PuTTY 并执行文本文件中列出的命令。我希望能够将参数传递给包含要在远程服务器上运行的命令的文本文件。

这是我目前拥有的 -

start C:\Users\putty.exe -load "server" -l userID -pw Password -m commands.txt

有没有办法将版本号作为参数传递给commands.txt 文件?

【问题讨论】:

  • 试试这个:start "" C:\Users\putty.exe -load "server" -l userID -pw Password -m commands.txt; start 命令可能会将第一个引用的字符串解释为窗口标题,因此 "" 明确给出...

标签: batch-file cmd scripting putty


【解决方案1】:

您必须即时生成commands.txt

set PARAMETER=parameter
echo ./myscript.sh %PARAMETER% > commands.txt
start C:\Users\putty.exe -load "server" -l userID -pw Password -m commands.txt

旁注:要自动执行任务,您应该考虑使用plink.exe 而不是putty.exe

set PARAMETER=parameter
echo ./myscript.sh %PARAMETER% > commands.txt
plink.exe -load "server" -l userID -pw Password -m commands.txt

Plink 甚至可以在其命令行上接受命令,这让您的任务更加轻松:

plink.exe -load "server" -l userID -pw Password ./myscript.sh parameter

【讨论】:

    【解决方案2】:

    我对此一头雾水,刚刚意识到我们可以通过以下简单方式轻松实现这一目标。

    我有一个要使用 Putty 执行的文本文件,它还需要运行时参数。在这种情况下,我没有使用静态文本文件,而是使用 windows bash 动态生成文件。我下面的用例将在我选择的主机上执行“Execute.txt”

    例子

    @ECHO OFF
    
    set prodhost[1]=host1 <br/>
    set prodhost[2]=host2<br/>
    
    ECHO Please select the box where you want to perform checkout.<br/>
    ECHO 1. host1 <br/>
    ECHO 2. host2<br/>
    set /p host="Enter Your Option: "
    
    
    echo echo "Login and switch user was successful" <br/>
    echo hostname <br/>
    echo sudo su - 'username' ^<^<  EOF <br/>
    echo <br/>
    echo EOF <br/>
    )>"Execute.txt" <br/>
    
    "plink.exe" -l %username% -ssh !prodhost[%host%]! -m Execute.txt
    
    

    BottomLine : 使用 bash 动态生成要执行的脚本并将其存储到文件中,然后使用 Plink 将其推送

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 2010-09-11
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      相关资源
      最近更新 更多