【问题标题】:How to execute multiple commands sequentially on device in Windows batch file using PuTTY/Plink?如何使用 PuTTY/Plink 在 Windows 批处理文件中的设备上按顺序执行多个命令?
【发布时间】:2021-04-09 06:43:29
【问题描述】:

我正在尝试使用 .bat 脚本以自动方式通过 SSH 配置设备。在下面的 sn-p 中,我以正确的顺序生成包含所需命令的文件,然后我使用 plink 将文件执行/读入 SSH 连接。这导致错误消息命令未知,我认为这是由于命令不是一个一个执行而是插入整个文件的事实造成的。

有人知道我如何顺序执行多个命令吗?

我尝试将 commands.txt 文件重定向到plink,但没有成功。此外,无法为每个命令创建新的 SSH 连接,因为某些命令会将设备转入配置模式。不幸的是,我尝试配置的设备不是基于 Unix 的,因此无法使用 && 或 ; 链接命令,我需要插入命令,然后“按 Enter”并继续。

config.bat

@echo off
SET /P IpAdres=IP: 
SET /p Username=Username:
SET /p Password=Password:
echo command 1 >> commands.txt
echo command 2 >> commands.txt
echo command 3 >> commands.txt
echo command 4 >> commands.txt
plink.exe -batch  %IpAdres% -l %Username% -pw %Password% -m commands.txt

【问题讨论】:

    标签: batch-file ssh putty plink


    【解决方案1】:

    设备确实有可能将命令解释为一个。使用 Plink/PuTTY -m 开关指定的命令使用“exec”SSH 通道执行,该通道仅用于单个命令。虽然某些 SSH 服务器(如 OpenSSH)甚至可以通过这种方式处理多个命令(因此您的批处理文件可以在那里工作),但这绝不是一种标准行为。您的设备可能使用了一些专有的 SSH 服务器,而不是普通的 OpenSSH。


    如果你想模拟一个用户一个接一个地输入命令,使用输入重定向代替(这样Plink使用“shell”通道代替):

    (
        echo command 1
        echo command 2
        echo command 3
        echo command 4
    ) | plink.exe -batch %IpAdres% -l %Username% -pw %Password%
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 PowerShell,您还可以使用简单的数组将命令通过管道传输到 plink.exe。 例如,

          @(
             write-host "command 1"
             write-host "command 2"
             write-host "command 3"
             write-host "command 4"
          ) | plink.exe -batch $ipaddress -l $username -pw $password
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        相关资源
        最近更新 更多