我正在尝试制作一台无头机器,它可以在启动时通过脚本自动运行腻子,并且在程序关闭时自动重新启动。
虽然从技术上讲,这在大多数情况下都可以正常工作,但如果出现网络问题,putty 就会挂起并弹出一个窗口,提示已断开连接。
我看到了“退出时关闭窗口”选项,我知道这是我需要的,但是,我只能从窗口执行此操作 - 我还没有找到从命令行更改此设置的方法。
是否有人知道这是否可行以及要设置什么...或者是否只是可以更改默认值,因为这是在这台机器上运行的全部内容?
答案1
最好的解决方案是在 PuTTY 中创建一个自定义会话(更改“退出时关闭窗口”设置)并通过命令行加载该会话,但如果您无法访问 GUI,这并不容易。但是,我不知道有什么方法可以通过命令行指定单个设置。
但是,如果你可以编辑注册表,则可以通过在注册表中创建新项来创建会话
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
然后,您可以在其中添加与 GUI 中的会话设置相对应的值。因此,如果您希望窗口在退出时始终关闭,则可以添加一个名为 CloseOnExit 的 DWORD 值,其中包含值 2。未指定的其他所有内容都将保留为默认值。
然后你需要添加
-load "session name"
到命令行字符串,其中“会话名称”是您创建的密钥的名称。将任何其他命令行选项(如服务器、登录名、密码等)放在后面,一切就绪。
我自己已经测试过了,但在任何手动编辑之前备份注册表仍然是明智的。
另外,PuTTY 还有一些分支(例如腻子托盘) 具有中断后自动重新连接的功能,但我无法保证它们的效果如何。
答案2
当您收到此错误时:
然后你可以写一个AutoIt 脚本等待此窗口出现并确认:
$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")
您还可以将脚本编译为一个小型的独立 .exe 文件。在启动 PuTTY 之前,将其放入批处理文件中。
答案3
我知道我来晚了,但你也可以使用 putty 的plink.exe
。它采用与 putty 相同的参数,但以与ssh
命令类似的方式在线运行。它还会阻止处理并返回失败状态,这对于在一堆命令中失败的连接非常有用。