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 DHL Versenden 4.0 Fehler: Please enter a house number JTL-ShippingLabels - Fehler und Bugs 5
Neu 500er Fehler im Shop nach aktivierung des Nova Child Templates für JTL-Shop 3
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
Neu Shop zeigt keine Artikel mehr Fehler 500 Betrieb / Pflege von JTL-Shop 9
Neu Paypal 2.2.1; Fehler "Der Zahlungsanbieter hat eine Anmeldung gefordert" Plugins für JTL-Shop 0
Neu Keine Warenpost Int. Labels hsCode - Fehler? JTL-ShippingLabels - Fehler und Bugs 8
Fehler mit Zahlungsabgleich JTL-Wawi 1.11 11
Neu JTL-Wawi Shopabgleich per E-Mail überwachen (Warnungen & Fehler) Onlineshop-Anbindung 1
Fehler beim Abgleich mit Amazon JTL-Wawi 2.0 10
Fehler nach Update auf Version 1.11.11 und 2.0.4 JTL-Wawi 2.0 7
Neu DHL 4.0 Versandexport Fehler JTL-ShippingLabels - Ideen, Lob und Kritik 13
Fehler beim Abgleich mit dem JTL-Shop JTL-Wawi 2.0 12
Neu Seltsamer Fehler bei PayPal-Checkout: "Warenkorb enthielt Vaterartikel..." JTL-Shop - Fehler und Bugs 2
Neu PayPal Plugin wirft Fehler auf einmal wegen telefonnummer JTL-Shop - Fehler und Bugs 3
Neu Fehler DHL 4.0 Höherversicherung JTL-ShippingLabels - Fehler und Bugs 4
Neu DHL 4.0 Fehler "Please Enter Name 1" JTL-ShippingLabels - Fehler und Bugs 3
Problem mit Hermes Österreich Sendungsnummern – Fehler beim Amazon-Abgleich in JTL-Wawi JTL-Wawi 1.10 0
Neu Shop gesperrt - Webspace überschritten - Zusatzspace buchen bringt Fehler - Support fühlt sich nicht zuständig Betrieb / Pflege von JTL-Shop 7
hipping 4.0 gibt fehler: Error converting value 500 to type 'Shipping.DHL.GKVAPI40.Shared.RequestStatus'. Path 'status', line 1, position 13. JTL-Wawi 1.11 3
Neu DHL Versenden 4.0 HS Code-Fehler bei Freiposition JTL-ShippingLabels - Fehler und Bugs 20
DHL Versenden 4.0 nicht vollständig konfigurierbar (GUI Fehler) JTL-Wawi 2.0 5
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Neu Shopware 5 + JTL-Connector: sporadische 500 Fehler / PHP-FPM Limit erreicht – trotz unverändertem Setup User helfen Usern - Fragen zu JTL-Wawi 0
Neu Fehler Rechnungsupload Amazon FBA Business Kunde JTL-Wawi - Fehler und Bugs 0
Gelöst: Shipping 4.0 gibt fehler: The product entered is unknown. JTL-Wawi 1.11 6
Neu Error 500 Fehler nach Dropper Installation Betrieb / Pflege von JTL-Shop 2
JTL-Wawi 1.11.7 Sporadischer Fehler - Zugriff verweigert. JTL-Wawi 1.11 4
Neu VCS Lite / IDU blockiert – Aufträge fälschlich unter "Externe Rechnungen" (Amazon API Fehler) Amazon-Anbindung - Fehler und Bugs 9
Fehler bei Bearbeitung von Attributen via HTML-Editor JTL-Wawi 2.0 3
Neu Produkt-Upload schlägt fehl nach Shopware-Update 6.7.9.0 – Fehler bei quantityStart (SaaS-Connector) Shopware-Connector 14
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 500 Upgrade JTL-Shop4 auf JTL-Shop5 2
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 404 Upgrade JTL-Shop4 auf JTL-Shop5 11
Neu Etikettendruck über Remotedesktop Fehler Arbeitsabläufe in JTL-Wawi 0
Nach Update auf Wawi 2.0.X, API v1 Fehler JTL-Wawi 2.0 9
Neu Fehler Scan Barcodes GTIN13 auf einem Lotto-Kundenbeleg JTL-POS - Fehler und Bugs 4
Update auf 2.0.1 Fehler bei eazybusiness JTL-Wawi 2.0 17
Gelöst Störung: DHL Versenden 3.0 - Fehler "Request processing failure" Gelöste Themen in diesem Bereich 1
Neu Fehler beim Update der Datenbank von 1.11.7 auf 2.0.1 JTL-Wawi - Fehler und Bugs 7
Neu JTL Shipping Fehler bei DHL Versand über WMS ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Warnung: Attribute via JTL Funktion JTL_GetProductAttribute() funktioniert nicht zuverlässig Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1

Ähnliche Themen