如何在 Windows 中关闭活动 ssh 连接期间的睡眠

如何在 Windows 中关闭活动 ssh 连接期间的睡眠

我的 Windows PC 在其不活动计时器运行完毕后将进入睡眠状态,显然活动的 ssh 连接不计入“活动”,因此当我在 ssh 连接上运行命令时,它将进入睡眠状态。有没有办法让 Windows 将 ssh 连接视为活动?

答案1

好的,我创建了脚本,实际上它很短。总之,它检查来自 openssh 服务器的最后一条信息消息是否是断开连接,在这种情况下,它会将睡眠超时重置为默认值,否则它会禁用睡眠。

$startDate = $(Get-Date)


$interval = 10
$standby_timeout = 30

Write-Host "starting script at $startDate"

while ($true) {
    $last_event_disconnect = Get-WinEvent -MaxEvents 1 OpenSSH/Operational | where {$_.TimeCreated -gt $startDate} | ForEach-Object {$_.message} | Select-String -Quiet "[Dd]isconnect"

    if ($last_event_disconnect) {
        Write-Host "found disconnect event, resetting to standard timeout."
        Powercfg.exe /Change standby-timeout-ac 30
    } else {
        Write-Host "there may be an ssh connection, refusing sleep."
        Powercfg.exe /Change standby-timeout-ac 0
    }

    Start-Sleep $interval
}

我现在只是在启动时运行它(可能使用标准输出到日志文件)您可以想象通过更多的睡眠/不睡眠条件和更强大的检查轻松扩展它。Powercfg.exe应该是本地可用的,所以这不需要任何安装。

注意:我相信这确实需要 sshd 具有 INFO 日志记录级别:将其添加到 C:/ProgramData/ssh/sshd_config

LogLevel INFO

答案2

为了防止计算机进入睡眠状态,您可以使用以下程序 咖啡因 或者 失眠

Caffeine 的工作原理是每 59 秒模拟一次无害的按键,而 Insomnia 则在运行时调用 API 函数来禁用睡眠模式。

这两个程序似乎是无害的,几乎不会影响您对计算机的使用,因此只要使用 ssh,您就可以让它们与您的工作并行运行(或不运行)。

相关内容