- abendkontrolle.py: --quelle und --quelle-ibkr (Vorgabe wsl wie bisher, dockerhost liest das Ergebnis des Hosts ueber SSH), fahre_dockerhost - abendkontrolle_wsl.py: --ibkr-python fuer ibkr_pruefen.py im Container - abendkontrolle_einrichten.ps1: -Quelle und -QuelleIbkr, 23:15 sobald ein Teil vom Host kommt - neue Angriffstreiber abendkontrolle_dockerhost_angriffe.py und abendkontrolle_ibkr_python_angriffe.py - Abdichtung gegen echte WSL- und SSH-Wege in den Treibern, auch in abendkontrolle_angriffe.py und rueckweg_aapl_angriffe.py (nach dem ntfy-Vorfall eines Mutanten am 2026-09-26) - LIESMICH: Abschnitt Paket DH - .claude/workflows/plankritik.js: LF statt CRLF (das CR war die Ursache von "script contains control characters"), meta gekuerzt, Einzelheiten im Kommentar Co-Authored-By: Claude Opus 5.5 <[email protected]>
58 lines
3.5 KiB
PowerShell
58 lines
3.5 KiB
PowerShell
# Richtet die Windows-Aufgabe "Trading Plattform - Abendkontrolle" ein oder entfernt sie.
|
|
# Koordinator-Werkzeug, nicht fuers Repo. Auftrag Pascal 2026-09-24: taegliche Abendkontrolle,
|
|
# dauerhaft, uebersteht Neustarts, blockiert keine Updates von Claude Code oder Desktop.
|
|
#
|
|
# Zwei Ausloeser: werktags 22:45 (nach der Tagesauswertung um 22:20) oder statt dessen 23:15, sobald ein Teil vom
|
|
# Docker-Host kommt (-Quelle oder -QuelleIbkr dockerhost, seit Paket DH), und fuenf Minuten nach
|
|
# jeder Anmeldung (holt einen verpassten Abend nach; abendkontrolle.py prueft nur Tage ohne
|
|
# Ergebnisdatei).
|
|
# Nur bei angemeldetem Benutzer (Interactive): WSL und der ganze Paper-Betrieb brauchen die Anmeldung
|
|
# ohnehin (Aufgabe "Trading Plattform - WSL wachhalten"). pythonw.exe startet ohne Fenster.
|
|
# Voller Interpreterpfad: -Execute "python" endet in der Aufgabenplanung mit 0x80070002.
|
|
#
|
|
# Aufruf: powershell -NoProfile -File abendkontrolle_einrichten.ps1 [-Aktion einrichten|entfernen]
|
|
# [-Quelle wsl|dockerhost] [-QuelleIbkr wsl|dockerhost]
|
|
param(
|
|
[ValidateSet("einrichten", "entfernen")]
|
|
[string]$Aktion = "einrichten",
|
|
# Seit Paket DH: wsl (Vorgabe) prueft in WSL wie bisher; dockerhost liest das Ergebnis des
|
|
# Docker-Hosts ueber SSH, werktags erst um 23:15 (der Host prueft um 16:30 New Yorker Zeit).
|
|
[ValidateSet("wsl", "dockerhost")]
|
|
[string]$Quelle = "wsl",
|
|
# Die Quelle fuer den Teil ibkr; ohne Angabe dieselbe wie -Quelle. Die IBKR-Instanz zieht an
|
|
# einem eigenen Abend um (Umzugs-Drehbuch DH, Phase 7).
|
|
[ValidateSet("wsl", "dockerhost")]
|
|
[string]$QuelleIbkr
|
|
)
|
|
|
|
$Name = "Trading Plattform - Abendkontrolle"
|
|
if ($Aktion -eq "entfernen") {
|
|
Unregister-ScheduledTask -TaskName $Name -Confirm:$false
|
|
return
|
|
}
|
|
|
|
$Py = "C:\Users\Pascal Michel\AppData\Local\Programs\Python\Python313\pythonw.exe"
|
|
$Skript = "D:\Claude\.vault-tools\trading-plattform-pruefung\abendkontrolle.py"
|
|
if (-not (Test-Path $Py)) { throw "Interpreter fehlt: $Py" }
|
|
if (-not (Test-Path $Skript)) { throw "Skript fehlt: $Skript" }
|
|
|
|
$Benutzer = "$env:USERDOMAIN\$env:USERNAME"
|
|
if (-not $QuelleIbkr) { $QuelleIbkr = $Quelle }
|
|
$Aufruf = New-ScheduledTaskAction -Execute $Py -Argument ('"' + $Skript + '" --quelle ' + $Quelle + ' --quelle-ibkr ' + $QuelleIbkr) -WorkingDirectory "D:\Claude"
|
|
if ($Quelle -eq "dockerhost" -or $QuelleIbkr -eq "dockerhost") { $Uhrzeit = "23:15" } else { $Uhrzeit = "22:45" }
|
|
$Abends = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday, Tuesday, Wednesday, Thursday, Friday -At $Uhrzeit
|
|
$Anmeldung = New-ScheduledTaskTrigger -AtLogOn -User $Benutzer
|
|
$Anmeldung.Delay = "PT5M"
|
|
$Wer = New-ScheduledTaskPrincipal -UserId $Benutzer -LogonType Interactive -RunLevel Limited
|
|
$Regeln = New-ScheduledTaskSettingsSet -StartWhenAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries `
|
|
-ExecutionTimeLimit (New-TimeSpan -Minutes 45) -MultipleInstances IgnoreNew
|
|
Register-ScheduledTask -TaskName $Name -Action $Aufruf -Trigger @($Abends, $Anmeldung) -Principal $Wer `
|
|
-Settings $Regeln -Force `
|
|
-Description "Abendkontrolle des Paper-Betriebs: liest nur, schreibt in die Tagesnotiz, meldet Befunde per ntfy. Koordinator-Werkzeug, siehe abendkontrolle.py." | Out-Null
|
|
|
|
$Aufgabe = Get-ScheduledTask -TaskName $Name
|
|
"{0}: {1}" -f $Aufgabe.TaskName, $Aufgabe.State
|
|
$Aufgabe.Triggers | ForEach-Object { "Ausloeser: {0} {1} {2}" -f $_.CimClass.CimClassName, $_.StartBoundary, $_.Delay }
|
|
"Naechster Lauf: {0}" -f (Get-ScheduledTaskInfo -TaskName $Name).NextRunTime
|
|
"Quellen: {0} (alpaca), {1} (ibkr)" -f $Quelle, $QuelleIbkr
|