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.
|
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
|
## 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.
|
- 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.
|
- 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
|
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
|
## Nutzung mit Docker
|
||||||
1. Docker-Image bauen:
|
1. Docker-Image bauen:
|
||||||
```bash
|
```bash
|
||||||
docker build -t ti-status2mattermost .
|
docker build -t ti-status2mattermost .
|
||||||
```
|
```
|
||||||
2. Container starten:
|
2. Container regelmäßig starten (z.B. mit Cron):
|
||||||
```bash
|
```cron
|
||||||
docker run -d --name ti-status2mattermost ti-status2mattermost
|
*/5 * * * * docker run --rm -v $(pwd)/ti_status_state.json:/app/ti_status_state.json 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
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Konfiguration
|
## Konfiguration
|
||||||
- Die Mattermost-Webhook-URL und die Status-URL sind im Skript als Konstanten hinterlegt.
|
- 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
|
## Hinweise
|
||||||
- Bereits gesendete Meldungen werden in der Datei `ti_status_state.json` gespeichert.
|
- 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"
|
TI_STATUS_URL = "https://fachportal.gematik.de/ti-status"
|
||||||
WEBHOOK_URL = "https://mattermost.medisoftware.org/hooks/i67zgcgajifxxxtfwjxcxace7a"
|
WEBHOOK_URL = "https://mattermost.medisoftware.org/hooks/i67zgcgajifxxxtfwjxcxace7a"
|
||||||
STATE_FILE = "ti_status_state.json"
|
STATE_FILE = "ti_status_state.json"
|
||||||
CHECK_INTERVAL = 300 # 5 Minuten
|
|
||||||
|
|
||||||
def fetch_status_messages():
|
def fetch_status_messages():
|
||||||
resp = requests.get(TI_STATUS_URL)
|
resp = requests.get(TI_STATUS_URL)
|
||||||
@ -69,8 +68,7 @@ def send_to_mattermost(message):
|
|||||||
def main():
|
def main():
|
||||||
state = load_state()
|
state = load_state()
|
||||||
known_messages = set(state.get("messages", []))
|
known_messages = set(state.get("messages", []))
|
||||||
print("Starte Überwachung der TI-Status-Seite...")
|
print("Prüfe TI-Status-Seite auf neue Meldungen...")
|
||||||
while True:
|
|
||||||
try:
|
try:
|
||||||
messages = fetch_status_messages()
|
messages = fetch_status_messages()
|
||||||
new_messages = [m for m in messages if m not in known_messages]
|
new_messages = [m for m in messages if m not in known_messages]
|
||||||
@ -84,7 +82,6 @@ def main():
|
|||||||
print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})")
|
print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler: {e}")
|
print(f"Fehler: {e}")
|
||||||
time.sleep(CHECK_INTERVAL)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
Reference in New Issue
Block a user