gpt4 book ai didi

windows - 在 Windows 批处理中运行 Plink - 问题

转载 作者:可可西里 更新时间:2023-11-01 11:49:28 30 4
gpt4 key购买 nike

我正在使用 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 窗口中运行它,而不是双击)。你是对的 some special characters need to be escaped .如果你的密码应该是Welcome1%从字面上看然后使用

SET passwd=Welcome1%%

或高级set命令语法

SET "passwd=Welcome1%%"

编辑。以上建议特别涵盖%字符串中的百分号。但是,转义一些具有特殊含义的字符(例如 redirectors <>|& 等)为 ^< , ^> , ^| , ^&好像有点不方便,不够用。因此需要高级set命令语法 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 - 在 Windows 批处理中运行 Plink - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645001/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com