Neu Abgleichs Fehler Warnung

mnause

Aktives Mitglied
19. Juli 2016
89
16
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:
Ähnliche Themen
Titel Forum Antworten Datum
Neu Plugin führt zu Abgleich fehler Technische Fragen zu Plugins und Templates 0
Neu WooCommerce Connector Fehler: Shop-URL verweist nicht auf einen gültigen Shop WooCommerce-Connector 0
Leitweg / Zugpferd / xRechnung: Fehler - Werte werden nicht erkannt !? JTL-Wawi 1.9 1
Neu Lagerumbuchung, Fehler zu wenig Arbeitsspeicher ? User helfen Usern - Fragen zu JTL-Wawi 4
Beantwortet Workflow - Versandart ändern bei Fehler JTL-Workflows - Ideen, Lob und Kritik 2
Neu Unbehandelte Ausnahme #959190594F6282F Artikel-Senden-Fehler Shopify-Connector 6
Neu Shopware 6 Connector meldet Auth Fehler Shopware-Connector 2
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu Kassenbuch Fehler nach Update JTL-POS - Fehler und Bugs 7
Neu Amazon Lister 2.0 Bekleidungsgröße Fehler 90004205 Amazon-Lister - Fehler und Bugs 0
Hilfe benötigt - Amazon-Fehler wegen fehlender GPSR-Informationen in JTL Amazon-Lister - Fehler und Bugs 1
Neu JTL Worker Fehler - Amazon Abgleich soll nicht durchgeführt werden Amazon-Anbindung - Fehler und Bugs 12
In Bearbeitung Gmail Anbindung zu POS weg, bei Mail-Einrichtung zeigt er Fehler "10:" Einrichtung / Updates von JTL-POS 4
Hersteller erfassen geht nicht. Fehlermeldung: Es liegen Fehler vor JTL-Wawi 1.9 2
Beantwortet Fehler beim Abgleich WooCommerce-Connector 1
Neu Fehler TSE auf Bon JTL-POS - Fehler und Bugs 0
Neu Fehler: Eine Bestellung wird nicht mit Wawi synchronisiert JTL-Shop - Fehler und Bugs 2
In Bearbeitung Fehler / Exception Buchungsdaten-Export JTL-POS - Fehler und Bugs 7
In Bearbeitung Kassenbuch Fehler nach Update JTL-POS - Fehler und Bugs 13
Neu JTL Shop Anzeige Fehler Amazon Pay Button und Paypal Pay Button Allgemeine Fragen zu JTL-Shop 3
Neu JTL Datenbankverwaltung / Datenimport funktioniert fehler User helfen Usern - Fragen zu JTL-Wawi 5
Wawi Fehler beim Upload 1.9 JTL-Wawi 1.9 1
Fehler beim Update von 1.9.4.6 auf 1.9.6.5 - HILFE JTL-Wawi 1.9 4
Neu Seit update auf version 5.4 habe ich den Fehler das die Shop class nicht mehr gefunden wird. Technische Fragen zu Plugins und Templates 4
Neu Fehler im Abgleich zum Shop / Language ISO PrestaShop-Connector 1
Neu Fehler im Zahlungsabgleich (Zahlung 31.12.2024 - Wertstellung 2.1.2025) JTL-Wawi - Fehler und Bugs 0
Neu Installation MS SQL 2022 Express: Fehler beim Warten auf das Wiederherstellungshandle des Datenbankmoduls Installation von JTL-Wawi 9
Seit Update auf 1.9.6.5 Fehler bei Bestellabschluss, aber Bestellung geht ein JTL-Wawi 1.9 7
Neu Probleme mit dem Meta-Crawler und 403 Fehler beim Meta-Datenfeed Upload User helfen Usern 0
Neu Fehler bei Rückbuchung nach Storno JTL-Wawi - Fehler und Bugs 0
Fehler beim Datenbankupdate auf höhere Version JTL-Wawi 1.7 3
Neu GPSR Plugin Format Fehler Plugins für JTL-Shop 0
Neu Filter "Kategorie" resultiert in 404 Fehler - Shop v 5.4.0 JTL-Shop - Fehler und Bugs 0
Neu GRPS 1.0.4 Fehler Plugins für JTL-Shop 3
Fehler beim Abgleich nach Komplettabgleich JTL-Wawi 1.9 0
Neu Gratisgeschenke nicht verfügbar für Kundengruppe X - Warenkorb-Fehler JTL-Shop - Fehler und Bugs 0
GPRS Fehler beim Rendering der Attribute JTL-Wawi 1.9 9
Neu Fehler beim Bearbeiten der E-Mail-Vorlage "Bestellbestätigung" JTL-Shop - Fehler und Bugs 0
Fehler [DbeSClient]JTL-Wawi beim Abgleich mit JTL Shop5 JTL-Wawi 1.9 0
Neu Agbleich Fehler: Invalid module type: flow Shopware-Connector 4
Neu Update für Shopvote 1.1.0 führt zu SQL-Fehler Plugins für JTL-Shop 5
Version 1.9.6 X eine einzige Katastrophe.... Fehler und nervige Dinge JTL-Wawi 1.9 11
Filestream aktivieren, Fehler dbo.tFileAlt-Objekt JTL-Wawi 1.9 3
DHL Druck von Sperrgut triggert Fehler JTL-Wawi 1.9 0
Neu Fehler beim Abgleich mit Amazon durch Worker. Amazon-Anbindung - Fehler und Bugs 0
Neu Fehler bei Zahlungsarten für Kundengruppen einstellen JTL-Shop - Fehler und Bugs 1
Neu Fehler bei Zahlungsarten für Kundengruppen einstellen Allgemeine Fragen zu JTL-Shop 1
Neu Brutto Netto Preisanzeige Fehler bei eingetragener Umsatzsteuer Nummer UID JTL-Shop - Fehler und Bugs 1
Zahlungsmodul - Zahlung senden Fehler | JTL-WaWi 1.9.5.4 JTL-Wawi 1.9 5
Neu ACHTUNG WARNUNG: Falscher USt-Betrag beim Export mit der Ameise JTL-Wawi - Fehler und Bugs 4

Ähnliche Themen