Neu Abgleichs Fehler Warnung

mnause

Aktives Mitglied
19. Juli 2016
89
17
Essen
Firma
NAAM Distribution GmbH
Hallo da man nicht immer sofort mitbekommt das der Abgleich einen Fehler hat habe ich etwas gebastelt

Auf einem Debian System läuft via Cron folgendes check-sync-status.sh Skript

config.conf

Code:
# === SQL Server Verbindungsdetails ===
DB_SERVER=""
DB_USER=""
DB_PASS=""
DB_NAME=""

# === SQL-Abfragen ===
SQL_SYNC_QUERY="SELECT TOP 1 [cStatusMeldung] FROM [Mandant_1].[Sync].[tSyncLogsitzung] ORDER BY dEnde DESC;"

# === Skriptspezifische Konfiguration ===

# SQL-Export
SQL_LOG_DIR="/home/developer/log/sql"

# === E-Mail Versand Konfiguration ===
MAIL_TO=""                                      # Empfängermail
MAIL_FROM=""                     # Absendermail

# Dynamische Betreffzeilen für verschiedene Log-Typen
SUBJECT_INVOICE="Invoice Upload Log"
SUBJECT_SQL_EXPORT="SQL Export Log"
SUBJECT_CAM_SORT="Cam Record Sort Log"
SUBJECT_DEFAULT="System Log"

# === Fehler-Handling für Sync-Abfrage ===
ERROR_TEXT="Der Abgleich wurde abgebrochen."
EMAIL_COOLDOWN_TIME=1800  # 30 Minuten Cooldown in Sekunden

# === Log-Verwaltung ===
LOG_DIR="/home/developer/log"
MAX_LOG_FILES=30

check-sync-status.sh

Bash:
#!/bin/bash

# === Konfiguration einlesen ===
CONFIG_FILE="/home/developer/scripts/config.conf"
if [ -f "$CONFIG_FILE" ]; then
    source "$CONFIG_FILE"
else
    echo "❌ FEHLER: Konfigurationsdatei '$CONFIG_FILE' nicht gefunden!" >&2
    exit 1
fi

# === Verzeichnisse setzen ===
mkdir -p "$SQL_LOG_DIR"
LOCK_DIR="$SQL_LOG_DIR/lock"
mkdir -p "$LOCK_DIR"

# === Lock-Datei im Unterverzeichnis setzen ===
EMAIL_COOLDOWN_FILE="$LOCK_DIR/sync-error-email.lock"

# === Log-Datei erstellen ===
LOG_TIMESTAMP=$(date +%Y-%m-%d_%H-%M)
LOG_FILE="$SQL_LOG_DIR/sync-check-$LOG_TIMESTAMP.log"

# === SQL-Abfrage ausführen und speichern ===
echo "🔍 Führe SQL-Abfrage aus..." | tee "$LOG_FILE"
/opt/mssql-tools18/bin/sqlcmd -S "$DB_SERVER" -U "$DB_USER" -P "$DB_PASS" -d "$DB_NAME" -C -Q "$SQL_SYNC_QUERY" -h -1 -W 2>&1 | tee -a "$LOG_FILE"

# === Prüfen, ob der Fehlertext in der Abfrage enthalten ist ===
if grep -q "$ERROR_TEXT" "$LOG_FILE"; then
    echo "⚠️ Abgleich wurde abgebrochen! Prüfe, ob eine Benachrichtigung gesendet werden kann..." | tee -a "$LOG_FILE"

    # Prüfe, ob eine E-Mail-Sperre aktiv ist
    if [ -f "$EMAIL_COOLDOWN_FILE" ]; then
        LAST_EMAIL_TIME=$(stat -c %Y "$EMAIL_COOLDOWN_FILE")
        CURRENT_TIME=$(date +%s)
        TIME_DIFF=$((CURRENT_TIME - LAST_EMAIL_TIME))

        if [ $TIME_DIFF -lt $EMAIL_COOLDOWN_TIME ]; then
            REMAINING_TIME=$((EMAIL_COOLDOWN_TIME - TIME_DIFF))
            echo "⏳ Benachrichtigung bereits gesendet. Nächste in $REMAINING_TIME Sekunden möglich." | tee -a "$LOG_FILE"
            exit 0
        else
            echo "🔄 Cooldown abgelaufen. Sende neue Benachrichtigung..." | tee -a "$LOG_FILE"
            /bin/bash /home/developer/scripts/send-log-email.sh "$LOG_FILE"
            curl -s "https://api.callmebot.com/whatsapp.php?phone=######&text=Achtung+WAWI+Abgleichfehler&apikey=#######" > /dev/null
            touch "$EMAIL_COOLDOWN_FILE"
        fi
    else
        echo "📧 Erster Fehler erkannt. Sende Benachrichtigung..." | tee -a "$LOG_FILE"
        /bin/bash /home/developer/scripts/send-log-email.sh "$LOG_FILE"
        curl -s "https://api.callmebot.com/whatsapp.php?phone=#######&text=Achtung+WAWI+Abgleichfehler&apikey=######" > /dev/null
        touch "$EMAIL_COOLDOWN_FILE"
    fi

    # Maximal 30 Log-Dateien behalten
    find "$SQL_LOG_DIR" -type f -name "sync-check-*.log" | sort -r | tail -n +$((MAX_LOG_FILES+1)) | xargs rm -f
else
    echo "✅ Kein Fehler gefunden." | tee -a "$LOG_FILE"

    # Falls Sperrdatei existiert, aber kein Fehler mehr auftritt -> Lösche sie
    if [ -f "$EMAIL_COOLDOWN_FILE" ]; then
        echo "🗑️ Fehler behoben, lösche Sperrdatei." | tee -a "$LOG_FILE"
        rm -f "$EMAIL_COOLDOWN_FILE"
    fi

    # Lösche das Log, da kein Fehler aufgetreten ist
    echo "🗑️ Kein Fehler gefunden. Lösche Log-Datei." | tee -a "$LOG_FILE"
    rm -f "$LOG_FILE"
fi

echo "✅ Skript abgeschlossen."
exit 0

send- log-email.sh

Bash:
#!/bin/bash

# === Konfiguration einlesen ===
CONFIG_FILE="/home/developer/scripts/config.conf"
if [ -f "$CONFIG_FILE" ]; then
    source "$CONFIG_FILE"
else
    echo "❌ FEHLER: Konfigurationsdatei '$CONFIG_FILE' nicht gefunden!"
    exit 1
fi

# Argumente: Log-Datei, optional SQL-Export-Datei, optional E-Mail-Adresse für SQL-Export
LOG_FILE="$1"
ATTACHMENT="$2"
EMAIL_TO="$3"

# === PRÜFUNGEN ===
if [ -z "$LOG_FILE" ] || [ ! -f "$LOG_FILE" ]; then
    echo "❌ Fehler: Keine gültige Log-Datei angegeben."
    exit 1
fi

# Dynamischer Betreff basierend auf der Log-Datei
LOG_FILENAME=$(basename "$LOG_FILE")
if [[ "$LOG_FILENAME" == *"sql-export"* ]]; then
    SUBJECT="$SUBJECT_SQL_EXPORT - $(date +%Y-%m-%d)"
elif [[ "$LOG_FILENAME" == *"invoice-upload"* ]]; then
    SUBJECT="$SUBJECT_INVOICE - $(date +%Y-%m-%d)"
elif [[ "$LOG_FILENAME" == *"cam-rec-sort"* ]]; then
    SUBJECT="$SUBJECT_CAM_SORT - $(date +%Y-%m-%d)"
else
    SUBJECT="$SUBJECT_DEFAULT - $(date +%Y-%m-%d)"
fi

# === Überprüfung & Installation von msmtp ===
if ! command -v msmtp &> /dev/null; then
    sudo apt update && sudo apt install -y msmtp msmtp-mta
fi

# Falls keine spezielle E-Mail für den Export angegeben wurde, Standard-Mail-Adresse verwenden
if [ -z "$EMAIL_TO" ]; then
    EMAIL_TO="$MAIL_TO"
    echo "📧 Keine spezielle E-Mail für Export angegeben, sende Log an Standard-Empfänger: $MAIL_TO"
fi

# Mehrere Empfänger in ein Array umwandeln (Trennung durch Leerzeichen)
IFS=' ' read -ra EMAIL_ADDRESSES <<< "$EMAIL_TO"

# === E-Mail-Versand für jeden Empfänger ===
for EMAIL in "${EMAIL_ADDRESSES[@]}"; do
    EMAIL=$(echo "$EMAIL" | xargs)  # Entfernt unnötige Leerzeichen

    if [ -n "$ATTACHMENT" ] && [ -f "$ATTACHMENT" ]; then
        echo "📎 Sende SQL-Export mit Anhang an: $EMAIL"

        (
            echo "Subject: $SUBJECT"
            echo "From: $MAIL_FROM"
            echo "To: $EMAIL"
            echo "Content-Type: multipart/mixed; boundary=boundary123"
            echo "MIME-Version: 1.0"
            echo ""
            echo "--boundary123"
            echo "Content-Type: text/plain; charset=UTF-8"
            echo ""
            cat "$LOG_FILE"
            echo ""
            echo "--boundary123"
            echo "Content-Type: text/csv; name=$(basename "$ATTACHMENT")"
            echo "Content-Disposition: attachment; filename=$(basename "$ATTACHMENT")"
            echo "Content-Transfer-Encoding: base64"
            echo ""
            base64 "$ATTACHMENT"
            echo "--boundary123--"
        ) | sudo msmtp -a default "$EMAIL" 2>/dev/null
    else
        echo "📧 Sende Log-Datei ohne Anhang an: $EMAIL"

        (
            echo "Subject: $SUBJECT"
            echo "From: $MAIL_FROM"
            echo "To: $EMAIL"
            echo "Content-Type: text/plain; charset=UTF-8"
            echo "MIME-Version: 1.0"
            echo ""
            cat "$LOG_FILE"
        ) | msmtp -a default "$EMAIL" 2>/dev/null
    fi
done

exit 0

Das ganze Informiert über den Fehler Per Mail und per WhatsApp.

Was haltet ihr davon ?
Ich bin für Verbesserungsvorschläge offen .
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: no80
Ähnliche Themen
Titel Forum Antworten Datum
Neu PayPal - PayPal Checkout - 221 – SQL Fehler Plugins für JTL-Shop 0
Neu Fehler bei Abgleich mit Shopify Shopify-Connector 4
Neu unicorn2 Etsy listen nicht möglich - Fehler Artikelgewicht Schnittstellen Import / Export 6
Neu Fehler bei Versandbestätigung seit 28.07.2025 Amazon-Anbindung - Fehler und Bugs 2
Hood SCX Schnittstelle mit Listing Fehler JTL-Wawi 1.10 1
Neu PHP message: PHP Fatal error -> Seite nicht mehr aufrufbar (Fehler 500) Installation / Updates von JTL-Shop 1
Neu Shopify-Connector: Fehler "delivery_note table doesn't exist" beim Lieferschein-Abgleich Shopify-Connector 4
Neu FEHLER: eBay-Auktionen Upload nicht möglich, Fehlercodes helfen nicht weiter [Error 21917328 & 21920203] eBay-Anbindung - Fehler und Bugs 2
Neu Unnötiger Fehler beim Import von Kundendaten JTL-Shop - Fehler und Bugs 0
Neu Dringendes Problem: Bildabgleich nach Connector-Fix – "Parameter resourceUrl is empty" Fehler Shopify-Connector 4
Abgleich wird abgebrochen durch diesen Fehler Shopify-Connector 7
Neu Worker macht Fehler nach Update. kein Abgleich möglich Betrieb / Pflege von JTL-Shop 1
Neu Fehler Sie können aktuell keine Benutzer-Lizenzen für WMS bzw. WMS Mobile buchen Installation von JTL-WMS / JTL-Packtisch+ 9
Neu Fehler bei Abgleich WooCommerce-Connector 1
Neu EAN Fehler beim Etikettendruck User helfen Usern - Fragen zu JTL-Wawi 5
Neu Shopware 6.6.10.2 Abgleich zu JTL | Bilder Übertragung Fehler: Path cannot be empty Shopware-Connector 0
GLS-Retourenlabel – Fehler bei Feld 'Name1', obwohl DPD funktioniert JTL-Wawi 1.9 0
Neu Ständig wiederkehrender Fehler beim Ableich des Lister 2.0 Amazon-Lister - Fehler und Bugs 5
Zahlungsmodul - PayPal Fehler: kein lauschender Endpunkt JTL-Wawi 1.9 0
Neu DHL Labels kommen sehr stark verzögert raus oder Fehler: "Die HTTP-Anforderung wurde mit Clientauthentifizierungsschema "Anonymous" nicht zugelassen." JTL-ShippingLabels - Fehler und Bugs 1
Neu Fehler beim JTL-Worker – "Der Remoteserver hat einen Fehler zurückgegeben: (502) Ungültiges Gateway" (Shopify) JTL-Wawi - Fehler und Bugs 2
Neu DHL Fehler "Großkundenempfänger" JTL-ShippingLabels - Fehler und Bugs 0
Neu JTL Debug 2.0.4 und Shop 5.5.2 - Fehler 500 Plugins für JTL-Shop 3
Neu NOVA Theme Fehler - 5.5.2 JTL-Shop - Fehler und Bugs 0
Neu Upload-Dateien: Fehler beim Abgleich Onlineshop-Anbindung 0
Neu Paypal Plugin läßt sich nicht installieren - SQL Fehler Plugins für JTL-Shop 2
Neu Plugin Fehler JTL-Shop - Fehler und Bugs 7
Fehler in der JTL-Wawi-Anzeige, ob ein Artikel bereits einem Onlineshop zugeordnet wurde. JTL-Wawi 1.10 5
Neu Fehler DHL Auslandsversand JTL-ShippingLabels - Fehler und Bugs 12
Neu Mit Ameize nutze: Freie Position zum Auftrag hinzufügen verursacht Fehler JTL-Ameise - Fehler und Bugs 3
Neu Barrierefreiheit WAVE-Report mit 1 Kontrast-Fehler im Auswahlmenü Templates für JTL-Shop 1
Neu Otto Import über Eazyauction - Fehler 100096 - SWITCH_API_VERSION User helfen Usern - Fragen zu JTL-Wawi 16
Neu Export der Artikel - Fehler beim Export!? JTL-POS - Fehler und Bugs 0
Neu Fehler Erstabgleich - Konflikt mit der FOREIGN KEY-Einschränkung Shopify-Connector 2
In Diskussion Workflow kurze Pause per Batch - Fehler "Die Eingabeumleitung wird nicht unterstützt" JTL-Workflows - Ideen, Lob und Kritik 6
Fehler beim Belegabruf JTL2Datev aus JTL / "Belegkopf-ExtAuftrag...." JTL-Wawi 1.10 2
Neu Fehler Meldung beim Abgleich Shopware-Connector 4
Neu Fehler beim Aktualisieren einer bestehenden Bestellung mit Ameize JTL-Ameise - Fehler und Bugs 16
Neu Fehler bei Anbindung JTL Wawi und JTL Shop 5 JTL-Shop - Fehler und Bugs 1
Neu Connector funktioniert seit Fehler E-Mail nicht mehr Shopify-Connector 3
Neu Update von 1.9.8.0 auf 1.10.11.0 läuft auf Fehler JTL-Wawi - Fehler und Bugs 2
Neu Anbindung JTL-Connecor an WooCommerce nicht möglich - JSON-Fehler in der WAWI WooCommerce-Connector 2
Neu DATEV Rechnungsdatenservice 2.0 vs. 1.10.10.3 WAWI fehler!? JTL-Wawi - Fehler und Bugs 16
Neu 1.10.11.0 - Fehler - Artikel - Filter JTL-Wawi - Fehler und Bugs 0
Import Fehler! Der Vorgang wurde abgebrochen! JTL-Wawi 1.10 24
xRechnung - Fehler IBAN JTL-Wawi 1.10 5
In Diskussion Rechnung per mail / Workflow gibt Fehler aus JTL-Workflows - Fehler und Bugs 6
Neu Shopify Connector Fehler bezüglich "unique key" bei den Kategorien Shopify-Connector 5
Neu JTL wawi Fehler beim Zugriff auf die Datenbank / Datenbankverwaltung aber funktioniert Installation von JTL-Wawi 3
Neu Fehler bei der Datenbank Sicherung Export JTL-Wawi - Fehler und Bugs 3

Ähnliche Themen