运行 批量 Windows Plink - 问题
Running Plink in a Windows Batch - Issues
我正在使用 windows 批处理操作组合一个非常基本的自动化脚本,其中将循环遍历 IP 地址列表和 运行 plink 命令以登录并保持帐户活动在服务器上,因为它最近登录过服务器。
我相信我可以使用大部分功能,但是我在传递密码时遇到了问题。我看到一个问题,如果我的密码有特殊字符,并且我通过命令提示符 运行 脚本,它不会通过特殊字符传递给 plink 命令。这是脚本的外观:
@echo on
SET userid=root
SET passwd=Welcome1%
for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY"
plink.exe -pw %passwd% %userid%@%%i hostname
popd
)
ipaddress.txt 文件包含:
10.0.0.1
10.0.0.2
10.0.0.3
我们的想法是遍历每个 IP 地址的列表,登录并验证访问权限。我还希望确保传递值 Y 或 N 以确保服务器作为脚本的一部分是可信的还是不可信的。任何帮助将不胜感激。
您可以使用 @echo on
(运行 从 cmd
window 中查看您的脚本行为,而不是双击)。你是对的some special characters need to be escaped。如果您的密码字面上应该是 Welcome1%
那么请使用
SET passwd=Welcome1%%
或高级set
命令语法
SET "passwd=Welcome1%%"
编辑。以上建议特别涵盖字符串中的 %
百分号。但是,转义一些具有 特殊含义 的字符(例如 redirectors <
, >
, |
, &
etc.) as ^<
, ^>
, ^|
, ^&
seems to be a bit inconvenient and could not suffice. Therefore required advanced set
command syntax and delayed expansion enabled。
例如,Wel<come>1%
字符串可以如下使用:
SET "userid=root"
SET "passwd=Wel<come>1%%"
for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY"
SETLOCAL EnableDelayedExpansion
plink.exe -pw !passwd! %userid%@%%i hostname
ENDLOCAL
popd
)
我正在使用 windows 批处理操作组合一个非常基本的自动化脚本,其中将循环遍历 IP 地址列表和 运行 plink 命令以登录并保持帐户活动在服务器上,因为它最近登录过服务器。
我相信我可以使用大部分功能,但是我在传递密码时遇到了问题。我看到一个问题,如果我的密码有特殊字符,并且我通过命令提示符 运行 脚本,它不会通过特殊字符传递给 plink 命令。这是脚本的外观:
@echo on
SET userid=root
SET passwd=Welcome1%
for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY"
plink.exe -pw %passwd% %userid%@%%i hostname
popd
)
ipaddress.txt 文件包含:
10.0.0.1
10.0.0.2
10.0.0.3
我们的想法是遍历每个 IP 地址的列表,登录并验证访问权限。我还希望确保传递值 Y 或 N 以确保服务器作为脚本的一部分是可信的还是不可信的。任何帮助将不胜感激。
您可以使用 @echo on
(运行 从 cmd
window 中查看您的脚本行为,而不是双击)。你是对的some special characters need to be escaped。如果您的密码字面上应该是 Welcome1%
那么请使用
SET passwd=Welcome1%%
或高级set
命令语法
SET "passwd=Welcome1%%"
编辑。以上建议特别涵盖字符串中的 %
百分号。但是,转义一些具有 特殊含义 的字符(例如 redirectors <
, >
, |
, &
etc.) as ^<
, ^>
, ^|
, ^&
seems to be a bit inconvenient and could not suffice. Therefore required advanced set
command syntax and delayed expansion enabled。
例如,Wel<come>1%
字符串可以如下使用:
SET "userid=root"
SET "passwd=Wel<come>1%%"
for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY"
SETLOCAL EnableDelayedExpansion
plink.exe -pw !passwd! %userid%@%%i hostname
ENDLOCAL
popd
)