jonas.sse
Goto Top

Icinga Check ob neue Version verfügbar ist

Moin zusammen,

ich möchte gerne in Icinga einen Check einbauen der folgende Website aufruft und guckt ob der Downloadlink auf der Website in der Versionszahl hochgegangen ist.

Auf der Website gibt es einen redirect/Link der zu "https://cdn.cloudya.com/cloudya-1.7.7-crm-win-msi.zip" führt, unsere aktuelle Version ist die 1.7.7, ich möchte gerne eine Meldung haben die anschlägt wenn die Versionsnummer > ist als die definierte.

Habe mir bedürftig mit ein bisschen Recherche etwas zusammen gebastelt, wo geprüft wird ob die cdn URL einen 200 oder 404 zurückgibt. Besser geht es allemal, mir ist aber auf die Schnelle nichts eingefallen.

Bin für jede Hilfe dankbar!

import requests
import sys

def check_cloudya_version(url):
    try:
        response = requests.head(url)
        if response.status_code == 200:
            print("OK - Die Version ist 1.7.7")  
            sys.exit(0)
        elif response.status_code == 404:
            print("WARNING - Es gibt eine neue Cloudya Version")  
            sys.exit(1)
        else:
            print(f"CRITICAL - Unerwarteter Statuscode: {response.status_code}")  
            sys.exit(2)
    except requests.exceptions.RequestException as e:
        print(f"CRITICAL - Fehler beim Abrufen der URL: {e}")  
        sys.exit(2)

if __name__ == "__main__":  
    url = "https://cdn.cloudya.com/cloudya-1.7.7-crm-win-msi.zip"  
    check_cloudya_version(url)

Gruß

Content-ID: 9484317506

Url: https://administrator.de/contentid/9484317506

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

Michi91
Michi91 02.08.2024 um 08:17:08 Uhr
Goto Top
Statt de Status könntest du den Inhalt der Seite prüfen. Wenn "cloudya-1.7.7-crm-win-msi.zip" als Textinhalt auf der Download nicht mehr vorhanden ist, gibts ne Warning.
Ich kenne mich mit python nicht aus, aber schwierig kann es nicht sein face-smile
jonas.sse
Lösung jonas.sse 02.08.2024 um 08:26:16 Uhr
Goto Top
Habe nun ein shell skript, da ich mit dem python skript den Fehler "503 Server Error" zurück bekommen habe nachdem ich die Zertifikatsprüfung deaktiviert habe und das funktionierte prompt.

#!/bin/bash

# Konfiguration
URL="https://www.nfon.com/de/service/downloads/"  
CURRENT_VERSION="1.7.7"  
VERSION_PATTERN="Cloudya Desktop App [0-9]*\.[0-9]*\.[0-9]* ohne CRM Connect - msi"  

# Hole den Inhalt der URL
CONTENT=$(curl -s "$URL")  

# Überprüfe den HTTP-Status
if [ $? -ne 0 ]; then
    echo "UNKNOWN - Fehler beim Abrufen der URL"  
    exit 3
fi

# Suche nach der Versionsnummer
LATEST_VERSION=$(echo "$CONTENT" | grep -oP "$VERSION_PATTERN" | sed -E 's/Cloudya Desktop App ([0-9]+\.[0-9]+\.[0-9]+) ohne CRM Connect - msi/\1/')  

# Überprüfe, ob die Versionsnummer gefunden wurde
if [ -z "$LATEST_VERSION" ]; then  
    echo "UNKNOWN - Fehler: Keine Versionsnummer gefunden."  
    exit 3
fi

# Vergleiche die Versionsnummern
function compare_versions {
    local v1=$1
    local v2=$2
    # Vergleiche die Versionen
    if [ "$v1" == "$v2" ]; then  
        return 0
    elif [ "$(printf '%s\n' "$v1" "$v2" | sort -V | head -n1)" == "$v2" ]; then  
        return 1
    else
        return 2
    fi
}

# Vergleiche die Versionen
compare_versions "$CURRENT_VERSION" "$LATEST_VERSION"  
COMPARE_RESULT=$?

# Ausgabe der Ergebnisse basierend auf dem Vergleich
if [ $COMPARE_RESULT -eq 0 ]; then
    echo "Keine neue Version verfügbar"  
    exit 0
elif [ $COMPARE_RESULT -eq 1 ]; then
    echo "Neue Version verfügbar"  
    exit 1
else
    echo "UNKNOWN - Fehler beim Vergleich der Versionsnummern"  
    exit 3
fi