使用 plink 获取 putty 中已保存会话的列表

发布于 2024-11-14 06:14:59 字数 220 浏览 6 评论 0原文

我正在尝试在Windows下编写脚本来控制putty。 假设我有一个名为 mySession 的会话。我可以使用以下命令向它发送命令:

plink -load mySession -l myUserName -pw myPassowrd ps -ef

现在假设我保存了许多不同的会话。有没有办法循环遍历我的所有会话列表来运行此命令?

非常感谢

I am trying to write my scripts under windows to control putty.
Say I have a session called mySession. I can send a command to it using:

plink -load mySession -l myUserName -pw myPassowrd ps -ef

Now say I have many different sessions saved. is there a way to loop through the list of all my sessions to run this command?

Many thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怪我太投入 2024-11-21 06:14:59

据我所知,会话存储在注册表中(HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions)。至少在我这里的环境中是这样。例如,您可以使用批处理脚本来访问会话名称。

@echo OFF
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions"

FOR /F "usebackq" %%A IN (`REG QUERY %KEY_NAME% 2^>nul`) DO (
    FOR /F "tokens=6 delims=\" %%B IN ("%%A") DO (
        @echo ON
        "C:\Program Files\PuTTY\PLINK.EXE" -load %%B -l my_user -pw my_password ps -ef
        @echo OFF
    )
)

我使用 tokens=6 只获取路径的最后一部分 (%%A)。我不太熟悉批处理脚本,因此我什至不知道您是否需要setlocal ENABLEEXTENSION

如果您知道您的会话名称,您也可以简单地使用以下命令:

FOR %%A IN (session1_name session2_name session3_name) DO "C:\Program Files\PuTTY\PLINK.EXE" -load %%A -l my_user -pw my_password ps -ef

希望这会有所帮助,即使您的帖子已经发布近一年了。欢迎提出改进代码的意见。

As far as I know, the sessions are stored in the registry (HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions). At least it is the case in my environment here. You could for example use a batch script to access the session names.

@echo OFF
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions"

FOR /F "usebackq" %%A IN (`REG QUERY %KEY_NAME% 2^>nul`) DO (
    FOR /F "tokens=6 delims=\" %%B IN ("%%A") DO (
        @echo ON
        "C:\Program Files\PuTTY\PLINK.EXE" -load %%B -l my_user -pw my_password ps -ef
        @echo OFF
    )
)

I used tokens=6 to only get the last part of the path (%%A). I'm not much fimiliar with batch scripting therefore I don't even know if you need setlocal ENABLEEXTENSION.

If you know your session names you could also simply use the following command:

FOR %%A IN (session1_name session2_name session3_name) DO "C:\Program Files\PuTTY\PLINK.EXE" -load %%A -l my_user -pw my_password ps -ef

Hope this helps, even though your post is nearly one year old. Comments to improve the code are welcome.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文