Skript für Cron-Ausführung angepasst, README aktualisiert
This commit is contained in:
24
README.md
24
README.md
@ -3,7 +3,7 @@
|
||||
Dieses Python-Skript überwacht die Webseite [https://fachportal.gematik.de/ti-status](https://fachportal.gematik.de/ti-status) auf neue Störungsmeldungen und sendet diese automatisch an einen Mattermost-Webhook.
|
||||
|
||||
## Funktionsweise
|
||||
- Die Seite wird regelmäßig (alle 5 Minuten) auf neue Meldungen geprüft.
|
||||
- Die Seite wird bei jedem Aufruf auf neue Meldungen geprüft.
|
||||
- Neue Meldungen werden erkannt und als formatierte Nachricht an Mattermost gesendet.
|
||||
- Bereits gesendete Meldungen werden gespeichert, sodass sie nach einem Neustart nicht erneut verschickt werden.
|
||||
|
||||
@ -24,25 +24,29 @@ Das Skript kann direkt gestartet werden:
|
||||
python ti_status_checker.py
|
||||
```
|
||||
|
||||
Das Skript läuft in einer Endlosschleife und prüft alle 5 Minuten auf neue Meldungen.
|
||||
Das Skript prüft einmalig auf neue Meldungen und beendet sich dann.
|
||||
|
||||
### Automatisierung mit Cron (Linux)
|
||||
Um das Skript alle 5 Minuten auszuführen, kann ein Cronjob eingerichtet werden:
|
||||
```cron
|
||||
*/5 * * * * cd /pfad/zum/projekt && /usr/bin/python3 ti_status_checker.py
|
||||
```
|
||||
|
||||
### Automatisierung mit Task Scheduler (Windows)
|
||||
Nutze die Aufgabenplanung, um das Skript alle 5 Minuten zu starten.
|
||||
|
||||
## Nutzung mit Docker
|
||||
1. Docker-Image bauen:
|
||||
```bash
|
||||
docker build -t ti-status2mattermost .
|
||||
```
|
||||
2. Container starten:
|
||||
```bash
|
||||
docker run -d --name ti-status2mattermost ti-status2mattermost
|
||||
```
|
||||
Die Datei `ti_status_state.json` bleibt im Container gespeichert. Um den Status dauerhaft zu sichern, kann ein Volume gemountet werden:
|
||||
```bash
|
||||
docker run -d --name ti-status2mattermost -v $(pwd)/ti_status_state.json:/app/ti_status_state.json ti-status2mattermost
|
||||
2. Container regelmäßig starten (z.B. mit Cron):
|
||||
```cron
|
||||
*/5 * * * * docker run --rm -v $(pwd)/ti_status_state.json:/app/ti_status_state.json ti-status2mattermost
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
- Die Mattermost-Webhook-URL und die Status-URL sind im Skript als Konstanten hinterlegt.
|
||||
- Das Intervall kann über die Variable `CHECK_INTERVAL` (in Sekunden) angepasst werden.
|
||||
|
||||
## Hinweise
|
||||
- Bereits gesendete Meldungen werden in der Datei `ti_status_state.json` gespeichert.
|
||||
|
@ -8,7 +8,6 @@ import re
|
||||
TI_STATUS_URL = "https://fachportal.gematik.de/ti-status"
|
||||
WEBHOOK_URL = "https://mattermost.medisoftware.org/hooks/i67zgcgajifxxxtfwjxcxace7a"
|
||||
STATE_FILE = "ti_status_state.json"
|
||||
CHECK_INTERVAL = 300 # 5 Minuten
|
||||
|
||||
def fetch_status_messages():
|
||||
resp = requests.get(TI_STATUS_URL)
|
||||
@ -69,22 +68,20 @@ def send_to_mattermost(message):
|
||||
def main():
|
||||
state = load_state()
|
||||
known_messages = set(state.get("messages", []))
|
||||
print("Starte Überwachung der TI-Status-Seite...")
|
||||
while True:
|
||||
try:
|
||||
messages = fetch_status_messages()
|
||||
new_messages = [m for m in messages if m not in known_messages]
|
||||
for msg in new_messages:
|
||||
print(f"Neue Meldung gefunden: {msg}")
|
||||
send_to_mattermost(msg)
|
||||
known_messages.add(msg)
|
||||
if new_messages:
|
||||
save_state({"messages": list(known_messages)})
|
||||
else:
|
||||
print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})")
|
||||
except Exception as e:
|
||||
print(f"Fehler: {e}")
|
||||
time.sleep(CHECK_INTERVAL)
|
||||
print("Prüfe TI-Status-Seite auf neue Meldungen...")
|
||||
try:
|
||||
messages = fetch_status_messages()
|
||||
new_messages = [m for m in messages if m not in known_messages]
|
||||
for msg in new_messages:
|
||||
print(f"Neue Meldung gefunden: {msg}")
|
||||
send_to_mattermost(msg)
|
||||
known_messages.add(msg)
|
||||
if new_messages:
|
||||
save_state({"messages": list(known_messages)})
|
||||
else:
|
||||
print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})")
|
||||
except Exception as e:
|
||||
print(f"Fehler: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user