20-sep: migracion watchers (Telegram+recordatorios) a INFRAESTRUCTURA + estado/agentes/changelog
This commit is contained in:
89
scripts/instalar_watchers.ps1
Normal file
89
scripts/instalar_watchers.ps1
Normal file
@@ -0,0 +1,89 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Registra en el equipo actual las tareas programadas de los watchers de
|
||||
infraestructura (Telegram + recordatorios con message box).
|
||||
|
||||
.DESCRIPTION
|
||||
Los watchers viven ahora en `INFRAESTRUCTURA/scripts/` (centralizados; antes
|
||||
en biblioteca_negocio_prolongo/scripts/). Este instalador crea/actualiza dos
|
||||
tareas programadas que arrancan al iniciar sesion y se reinician si fallan:
|
||||
|
||||
1. `Telegram Watcher` -> scripts\telegram_watcher.py
|
||||
2. `Recordatorios Msgbox` -> scripts\recordatorios_msgbox.py
|
||||
|
||||
No requiere administrador. Idempotente: re-ejecutar tras un git pull.
|
||||
|
||||
.NOTES
|
||||
Repo: INFRAESTRUCTURA. Los datos de estado quedan en INFRAESTRUCTURA\estado\.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$NoStart
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
$RepoRoot = Split-Path -Parent $PSScriptRoot
|
||||
$PwshExe = Join-Path $env:SystemRoot 'System32\WindowsPowerShell\v1.0\powershell.exe'
|
||||
$UserId = "$env:USERDOMAIN\$env:USERNAME"
|
||||
|
||||
# Resolver el interprete de Python
|
||||
$Python = (Get-Command python -ErrorAction SilentlyContinue).Source
|
||||
if (-not $Python) { throw 'No se encuentra python en el PATH.' }
|
||||
|
||||
$Watchers = @(
|
||||
@{ Task = 'Telegram Watcher'; Script = Join-Path $RepoRoot 'scripts\telegram_watcher.py' },
|
||||
@{ Task = 'Recordatorios Msgbox'; Script = Join-Path $RepoRoot 'scripts\recordatorios_msgbox.py' }
|
||||
)
|
||||
|
||||
Write-Host '== Instalando tareas de watchers (INFRAESTRUCTURA) ==' -ForegroundColor Cyan
|
||||
Write-Host " - Python: $Python"
|
||||
Write-Host " - Repo : $RepoRoot"
|
||||
|
||||
foreach ($w in $Watchers) {
|
||||
if (-not (Test-Path $w.Script)) { throw "No se encuentra el script: $($w.Script)" }
|
||||
|
||||
if (Get-ScheduledTask -TaskName $w.Task -ErrorAction SilentlyContinue) {
|
||||
Unregister-ScheduledTask -TaskName $w.Task -Confirm:$false
|
||||
}
|
||||
|
||||
$Action = New-ScheduledTaskAction `
|
||||
-Execute $PwshExe `
|
||||
-Argument "-NoProfile -NonInteractive -ExecutionPolicy Bypass -WindowStyle Hidden -Command `"& '$Python' '$($w.Script)'`"" `
|
||||
-WorkingDirectory $RepoRoot
|
||||
|
||||
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
|
||||
|
||||
$Settings = New-ScheduledTaskSettingsSet `
|
||||
-AllowStartIfOnBatteries `
|
||||
-DontStopIfGoingOnBatteries `
|
||||
-StartWhenAvailable `
|
||||
-RestartCount 999 `
|
||||
-RestartInterval (New-TimeSpan -Minutes 1) `
|
||||
-MultipleInstances IgnoreNew
|
||||
$Settings.ExecutionTimeLimit = 'PT0S'
|
||||
$Settings.Hidden = $true
|
||||
|
||||
$Principal = New-ScheduledTaskPrincipal -UserId $UserId -LogonType Interactive -RunLevel Limited
|
||||
|
||||
Register-ScheduledTask `
|
||||
-TaskName $w.Task `
|
||||
-Action $Action `
|
||||
-Trigger $Trigger `
|
||||
-Settings $Settings `
|
||||
-Principal $Principal `
|
||||
-Description "Watcher de infraestructura: $($w.Script)" `
|
||||
-Force | Out-Null
|
||||
|
||||
Write-Host " - Tarea '$($w.Task)' registrada -> $($w.Script)" -ForegroundColor Green
|
||||
|
||||
if (-not $NoStart) {
|
||||
Start-ScheduledTask -TaskName $w.Task
|
||||
Write-Host " arrancada." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ''
|
||||
Write-Host 'Listo. Comprobar:' -ForegroundColor Cyan
|
||||
Write-Host " Get-ScheduledTask -TaskName 'Telegram Watcher','Recordatorios Msgbox'"
|
||||
Write-Host " Get-Content `"$RepoRoot\estado\telegram_mensajes.log`" -Tail 5"
|
||||
Reference in New Issue
Block a user