如何使用 PuTTY/Plink 在 Windows 批处理文件中在设备上顺序执行多个命令?
How to execute multiple commands sequentially on device in Windows batch file using PuTTY/Plink?
我正在尝试使用 .bat
脚本以自动方式通过 SSH 配置设备。在下面的代码片段中,我以正确的顺序生成了一个包含所需命令的文件,然后我 execute/read 使用 plink
将文件连接到 SSH 连接中。这样就报错commands are unknown,我想这是不是一个一个执行命令而是插入整个文件造成的。
有谁知道如何按顺序执行多个命令?
我试图将 commands.txt 文件重定向到 plink
,但没有成功。此外,不可能为每个命令创建新的 SSH 连接,因为某些命令会将设备转换为配置模式。不幸的是,我尝试配置的设备不是基于 Unix 的,因此无法使用 &&
或 ;
链接命令,我需要插入命令然后 'press 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
设备确实有可能将命令解释为一个命令。使用 Plink/PuTTY -m
开关指定的命令使用 "exec" SSH 通道执行,该通道专为单个命令而设计。虽然某些 SSH 服务器(如 OpenSSH)甚至可以通过这种方式处理多个命令(因此您的批处理文件可以在那里工作),但这绝不是标准行为。您的设备可能使用了一些专有的 SSH 服务器,而不是普通的 OpenSSH。
如果你想模拟用户一个接一个地输入命令,请改用输入重定向(这样 "shell" Plink 会改用通道):
(
echo command 1
echo command 2
echo command 3
echo command 4
) | plink.exe -batch %IpAdres% -l %Username% -pw %Password%
如果您使用的是 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
我正在尝试使用 .bat
脚本以自动方式通过 SSH 配置设备。在下面的代码片段中,我以正确的顺序生成了一个包含所需命令的文件,然后我 execute/read 使用 plink
将文件连接到 SSH 连接中。这样就报错commands are unknown,我想这是不是一个一个执行命令而是插入整个文件造成的。
有谁知道如何按顺序执行多个命令?
我试图将 commands.txt 文件重定向到 plink
,但没有成功。此外,不可能为每个命令创建新的 SSH 连接,因为某些命令会将设备转换为配置模式。不幸的是,我尝试配置的设备不是基于 Unix 的,因此无法使用 &&
或 ;
链接命令,我需要插入命令然后 'press 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
设备确实有可能将命令解释为一个命令。使用 Plink/PuTTY -m
开关指定的命令使用 "exec" SSH 通道执行,该通道专为单个命令而设计。虽然某些 SSH 服务器(如 OpenSSH)甚至可以通过这种方式处理多个命令(因此您的批处理文件可以在那里工作),但这绝不是标准行为。您的设备可能使用了一些专有的 SSH 服务器,而不是普通的 OpenSSH。
如果你想模拟用户一个接一个地输入命令,请改用输入重定向(这样 "shell" Plink 会改用通道):
(
echo command 1
echo command 2
echo command 3
echo command 4
) | plink.exe -batch %IpAdres% -l %Username% -pw %Password%
如果您使用的是 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