有没有办法让 putty 从命令行自动“退出时关闭窗口”?

有没有办法让 putty 从命令行自动“退出时关闭窗口”?

我正在尝试制作一台无头机器,它可以在启动时通过脚本自动运行腻子,并且在程序关闭时自动重新启动。

虽然从技术上讲,这在大多数情况下都可以正常工作,但如果出现网络问题,putty 就会挂起并弹出一个窗口,提示已断开连接。

我看到了“退出时关闭窗口”选项,我知道这是我需要的,但是,我只能从窗口执行此操作 - 我还没有找到从命令行更改此设置的方法。

是否有人知道这是否可行以及要设置什么...或者是否只是可以更改默认值,因为这是在这台机器上运行的全部内容?

答案1

最好的解决方案是在 PuTTY 中创建一个自定义会话(更改“退出时关闭窗口”设置)并通过命令行加载该会话,但如果您无法访问 GUI,这并不容易。但是,我不知道有什么方法可以通过命令行指定单个设置。

但是,如果你可以编辑注册表,则可以通过在注册表中创建新项来创建会话

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

然后,您可以在其中添加与 GUI 中的会话设置相对应的值。因此,如果您希望窗口在退出时始终关闭,则可以添加一个名为 CloseOnExit 的 DWORD 值,其中包含值 2。未指定的其他所有内容都将保留为默认值。

然后你需要添加

-load "session name"

到命令行字符串,其中“会话名称”是您创建的密钥的名称。将任何其他命令行选项(如服务器、登录名、密码等)放在后面,一切就绪。

我自己已经测试过了,但在任何手动编辑之前备份注册表仍然是明智的。

另外,PuTTY 还有一些分支(例如腻子托盘) 具有中断后自动重新连接的功能,但我无法保证它们的效果如何。

答案2

当您收到此错误时:

putty错误

然后你可以写一个AutoIt 脚本等待此窗口出现并确认:

$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")

您还可以将脚本编译为一个小型的独立 .exe 文件。在启动 PuTTY 之前,将其放入批处理文件中。

答案3

我知道我来晚了,但你也可以使用 putty 的plink.exe。它采用与 putty 相同的参数,但以与ssh命令类似的方式在线运行。它还会阻止处理并返回失败状态,这对于在一堆命令中失败的连接非常有用。

相关内容