Add desktop session detection to auto-boot-ollama-host script

Implement a new module for checking if the user is logged into a Windows desktop session. The script now skips Ollama startup and shutdown if the user is currently logged in, preventing interruptions. Update README to reflect new features and module structure.
This commit is contained in:
Bastian (BaM)
2025-09-14 18:27:39 +02:00
parent 80976be664
commit eb83c4ccbd
4 changed files with 158 additions and 1 deletions

45
scripts/session_check.lua Normal file
View File

@@ -0,0 +1,45 @@
-- Windows desktop session check module for auto-boot-ollama-host
-- Checks if a specific user is currently logged into a Windows desktop session
local utils = require("utils")
local ssh = require("ssh")
local session_check = {}
-- Check if user is currently logged into a Windows desktop session using quser
-- Returns true if user is logged in, false otherwise
function session_check.is_user_logged_in(config)
utils.log(("Checking if user '%s' is logged into desktop session using quser..."):format(config.SSH_USER))
-- Use quser command to check for active sessions
-- This works regardless of Windows language (looks for console/rdp sessions)
local command = "quser 2>nul | findstr /i \"console rdp-tcp#\" >nul && echo 1 || echo 0"
local ok, output, err = ssh.execute_with_output(command, config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE)
if not ok then
utils.log(("Failed to execute quser session check command: %s"):format(tostring(err)))
return false
end
if output and output ~= "" then
utils.log("Quser session check output received: " .. output)
-- Parse the result (remove any whitespace/newlines)
local clean_output = output:gsub("%s+", "")
local result = tonumber(clean_output)
if result == 1 then
utils.log(("User '%s' has an active desktop session"):format(config.SSH_USER))
return true
else
utils.log(("User '%s' has no active desktop sessions"):format(config.SSH_USER))
return false
end
else
utils.log("No output received from quser session check command")
return false
end
end
return session_check