我正在尝试使用.bat
脚本以自动方式通过SSH配置设备。在下面的代码片段中,我使用正确的顺序生成包含所需命令的文件,然后使用plink
执行/读取文件到SSH连接。这导致命令未知的错误消息,我认为这是由于命令不是逐个执行但插入整个文件的事实引起的。
有没有人知道如何顺序执行多个命令?
我尝试将commands.txt文件重定向到plink
但没有成功。此外,无法为每个命令创建新的SSH连接,因为某些命令会将设备转换为配置模式。不幸的是,我尝试配置的设备不是基于Unix的,因此无法使用&&
或;
链接命令,我需要插入命令,然后按“输入”#39 ;并继续。
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
答案 0 :(得分:3)
设备确实可以将命令解释为一个。使用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%
答案 1 :(得分:0)
如果您使用的是 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