Automatischer Push: 8 Datei(en) geändert
- .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/abbau_alpaca_lesen.py - .vault-tools/trading-plattform-pruefung/abbau_glattstellen.sh - .vault-tools/trading-plattform-pruefung/abbau_ibkr_lesen.sh - .vault-tools/trading-plattform-pruefung/abbau_restbestand.py - .vault-tools/trading-plattform-pruefung/abbau_restbestand_angriffe.py - .vault-tools/trading-plattform-pruefung/abbau_restbestand_einrichten.ps1 - AI/Regelwerk/windows-shell.md Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
1 parent
30ed04a643
commit
3784322a76
8 files changed
+1687
-3
No files matched your search
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
# Abbau Restbestand: stellt eine Paper-Instanz ueber scripts/killswitch.py glattstellen glatt.
|
||||
# Ersteller: Pascal Michel Erstellt: 2026-10-07
|
||||
# Doku: LIESMICH.md in diesem Ordner, Abschnitt "Paket AB"
|
||||
#
|
||||
# Das Bestaetigungswort verlaesst WSL nie: Dieses Skript liest es aus config/killswitch.toml der
|
||||
# Instanz und reicht es nur an killswitch.py weiter. Jede Zeile von killswitch.py geht danach durch
|
||||
# einen Filter: das Wort wird [wort], dann ohne_kontonummer() aus abendkontrolle_wsl.py
|
||||
# (Kontonummern als [konto], dann maskiere()), dann jede Dezimalzahl als [x].
|
||||
# Den Broker waehlt das Skript ausdruecklich: alpaca -> --broker alpaca, ibkr -> --broker ibkr
|
||||
# (gemessen: ibkr ist im IBKR-Ordner mit Marke ibkr erlaubt, alpaca im Projektordner ohne Marke).
|
||||
# --broker attrappe ersetzt die Wahl, nur fuer die Probe in einer Wegwerfkopie und die Angriffsfaelle.
|
||||
# Den Instanzordner nennt immer der Aufrufer (abbau_restbestand.py); hier steht kein echter Pfad.
|
||||
# Genau ein Aufruf von killswitch.py je Start, keine Schleife.
|
||||
#
|
||||
# Aufruf: bash abbau_glattstellen.sh <alpaca|ibkr> <instanzordner> [--broker attrappe]
|
||||
# Exit: der von killswitch.py (0 erfolgreich, 1 nicht erfolgreich, 3 abgelehnt, 4 Voraussetzung),
|
||||
# 2 Bedienfehler, 4 Wort nicht lesbar oder Instanzordner nicht erreichbar.
|
||||
set -u
|
||||
|
||||
GRUND="Abbau Restbestand nach Netzschalter-Abriss 2026-10-07; Auftrag Pascal 2026-10-07, ausgefuehrt von der Aufgabe Abbau Restbestand"
|
||||
HIER="$(dirname "$(readlink -f "$0")")"
|
||||
export TRADING_GEHEIMNISSE=/home/claude/.config/trading-plattform/secrets.toml
|
||||
export PYTHONIOENCODING=utf-8
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "Bedienfehler: Aufruf abbau_glattstellen.sh <alpaca|ibkr> <instanzordner> [--broker attrappe]" >&2
|
||||
exit 2
|
||||
fi
|
||||
instanz="$1"
|
||||
ordner="$2"
|
||||
shift 2
|
||||
case "$instanz" in
|
||||
alpaca)
|
||||
py=/home/claude/venvs/trading/bin/python
|
||||
broker=(--broker alpaca)
|
||||
;;
|
||||
ibkr)
|
||||
py=/home/claude/venvs/trading-ibkr/bin/python
|
||||
broker=(--broker ibkr)
|
||||
;;
|
||||
*)
|
||||
echo "Bedienfehler: Instanz muss alpaca oder ibkr sein" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--broker)
|
||||
if [ "$#" -lt 2 ] || [ "$2" != "attrappe" ]; then
|
||||
echo "Bedienfehler: --broker nimmt nur attrappe" >&2
|
||||
exit 2
|
||||
fi
|
||||
broker=(--broker attrappe)
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Bedienfehler: unbekannte Angabe" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if ! cd "$ordner"; then
|
||||
echo "Voraussetzung fehlt: Instanzordner nicht erreichbar" >&2
|
||||
exit 4
|
||||
fi
|
||||
|
||||
# Das Wort, nur in dieser Shell; tomllib aus dem Python der Instanz.
|
||||
wort="$("$py" -I -c 'import tomllib
|
||||
with open("config/killswitch.toml", "rb") as datei:
|
||||
print(tomllib.load(datei)["killswitch"]["bestaetigungswort"])' 2>/dev/null)"
|
||||
if [ -z "$wort" ]; then
|
||||
echo "Voraussetzung fehlt: Bestaetigungswort in config/killswitch.toml nicht lesbar" >&2
|
||||
exit 4
|
||||
fi
|
||||
|
||||
# Genau ein Aufruf; stdout und stderr zusammen, gefiltert erst hinter dem Lauf.
|
||||
ausgabe="$("$py" scripts/killswitch.py "${broker[@]}" glattstellen --grund "$GRUND" --bestaetigung "$wort" 2>&1)"
|
||||
code=$?
|
||||
|
||||
# Filter je Zeile: Wort, Kontonummern und maskiere(), Dezimalzahlen. Das Wort geht nur ueber die Umgebung.
|
||||
if ! printf '%s\n' "$ausgabe" | ABBAU_WORT="$wort" "$py" -I -c 'import os
|
||||
import re
|
||||
import sys
|
||||
sys.path.insert(0, sys.argv[1])
|
||||
from abendkontrolle_wsl import ohne_kontonummer
|
||||
wort = os.environ.pop("ABBAU_WORT", "")
|
||||
for zeile in sys.stdin.read().splitlines():
|
||||
if wort:
|
||||
zeile = zeile.replace(wort, "[wort]")
|
||||
zeile = ohne_kontonummer(zeile)
|
||||
print(re.sub(r"-?\d+[.,]\d+", "[x]", zeile)[:300])' "$HIER"; then
|
||||
echo "Ausgabe von killswitch.py nicht gefiltert und deshalb zurueckgehalten"
|
||||
fi
|
||||
unset wort ausgabe
|
||||
exit "$code"
|
||||
Reference in new issue
Block a user