繁体   English   中英

在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窗口中运行而不是双击运行)。 没错, 有些特殊字符需要转义 如果您的密码按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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM