我的 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