[英]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
窗口中运行而不是双击运行)。 没错, 有些特殊字符需要转义 。 如果您的密码按Welcome1%
应为Welcome1%
则使用
SET passwd=Welcome1%%
或高级set
命令语法
SET "passwd=Welcome1%%"
编辑 。 以上建议特别涵盖字符串中的%
百分号。 但是,与逃逸特殊含义的某些字符(例如重定向器 <
, >
, |
, &
等) ^<
, ^>
^|
, ^&
似乎有点不便,无法满足要求。 因此,需要使用高级set
命令语法并 启用延迟扩展 。
例如, 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
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.