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:
45
scripts/session_check.lua
Normal file
45
scripts/session_check.lua
Normal 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
|
||||
Reference in New Issue
Block a user