149 lines
4.4 KiB
Bash
149 lines
4.4 KiB
Bash
#!/bin/bash
|
||
|
||
# Schwellwerte definieren
|
||
warn=40
|
||
crit=10
|
||
max_days=365.0
|
||
|
||
# Liste der Domains
|
||
DOMAINS=(
|
||
"ad.ghnit.net"
|
||
"aduxa.de"
|
||
"api.distributors-network.com"
|
||
"aurenz.gc-gruppe.net"
|
||
"avdelinger.heidenreich.no"
|
||
"bimsplus24.com.pl"
|
||
"bimsplus24.pl"
|
||
"city-log.de"
|
||
"conel.de"
|
||
"cordesundgraefe-stiftung.de"
|
||
"corpo-group.com"
|
||
"cosmo-info.de"
|
||
"cpi-dev.ad.ghnit.net"
|
||
"cpi-prod.ad.ghnit.net"
|
||
"cpi-test.ad.ghnit.net"
|
||
"datpool.net"
|
||
"dev.rz.gc-gruppe.net"
|
||
"developer.distributors-network.com"
|
||
"distributors-network.com"
|
||
"dtg-handel.de"
|
||
"dtgonlineplus.de"
|
||
"edvstatus.gc-gruppe.de"
|
||
"efg-gruppe.de"
|
||
"efgonlineplus.de"
|
||
"elements-a.de"
|
||
"elements-show.at"
|
||
"elements-show.de"
|
||
"fkr.de"
|
||
"fkronlineplus.de"
|
||
"gc-gruppe.at"
|
||
"gc-gruppe.de"
|
||
"gc-gruppe.net"
|
||
"gc-neuheiten-messe.de"
|
||
"gcg-cee-fr-133.mra.datpool.net"
|
||
"gconlineplus.at"
|
||
"gconlineplus.be"
|
||
"gconlineplus.de"
|
||
"gconlineplus.hu"
|
||
"grosshaendlernetzwerk.at"
|
||
"grosshaendlernetzwerk.de"
|
||
"gut-gruppe.de"
|
||
"gutonlineplus.de"
|
||
"heidenreich-online.no"
|
||
"hti24.com.pl"
|
||
"hti24.pl"
|
||
"hti-bulgaria.com"
|
||
"hti-handel.de"
|
||
"htionlineplus.at"
|
||
"htionlineplus.de"
|
||
"huelsenonlineplus.de"
|
||
"hydrosolar24.com.pl"
|
||
"hydrosolar24.pl"
|
||
"hydrosolaronline.pl"
|
||
"i-log.de"
|
||
"itg-handel.de"
|
||
"itgonlineplus.com"
|
||
"itgonlineplus.de"
|
||
"jobs.karriere-chancen.net"
|
||
"kuechenstil.de"
|
||
"laponeonlineplus.de"
|
||
"lvmatcher2.gc-gruppe.net"
|
||
"lvmatcher.gc-gruppe.net"
|
||
"nfg-gruppe.at"
|
||
"nfg-gruppe.de"
|
||
"nfgonlineplus.de"
|
||
"onlineplus.store"
|
||
"poesis.de"
|
||
"productdataportal.com"
|
||
"produktdatenportal.gc-gruppe.de"
|
||
"red-de-distribuidores.es"
|
||
"rz.gc-gruppe.net"
|
||
"sap.gc-gruppe.net"
|
||
"schachtplaner.de"
|
||
"servicequadrat.info"
|
||
"siabiosca.com"
|
||
"sistems.at"
|
||
"sistems.de"
|
||
"tecget.de"
|
||
"tfg-gruppe.de"
|
||
"tfgonlineplus.de"
|
||
"trinnity.de"
|
||
"vigour.de"
|
||
"vigour.es"
|
||
"wconfigure.com"
|
||
"armtestrz05.rz.gc-gruppe.net"
|
||
)
|
||
|
||
# Funktion zur Prüfung eines Zertifikats
|
||
check_certificate() {
|
||
DOMAIN=$1
|
||
TIMEOUT=2
|
||
|
||
# Port je nach Domain setzen
|
||
if [ "$DOMAIN" == "armtestrz05.rz.gc-gruppe.net" ]; then
|
||
PORT=8443
|
||
else
|
||
PORT=443
|
||
fi
|
||
|
||
# Ablaufdatum des Zertifikats abrufen mit Timeout und Fehlerausgabe unterdrücken
|
||
EXPIRY_DATE=$(timeout $TIMEOUT openssl s_client -connect $DOMAIN:$PORT -servername $DOMAIN 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
|
||
|
||
if [ -z "$EXPIRY_DATE" ]; then
|
||
echo "2 SSL_CERT_$DOMAIN remaining_days=0;$warn;$crit;0;$max_days CRITICAL - Das Zertifikat für $DOMAIN konnte nicht abgerufen werden (Timeout). | remaining_days=0;$warn;$crit;0;$max_days"
|
||
return 2
|
||
fi
|
||
|
||
# Ablaufdatum in Sekunden seit dem Unix-Epoch umrechnen
|
||
EXPIRY_DATE_SECONDS=$(date -d "$EXPIRY_DATE" +%s)
|
||
|
||
# Aktuelles Datum in Sekunden seit dem Unix-Epoch
|
||
CURRENT_DATE_SECONDS=$(date +%s)
|
||
|
||
# Verbleibende Tage berechnen
|
||
REMAINING_DAYS=$(( (EXPIRY_DATE_SECONDS - CURRENT_DATE_SECONDS) / 86400 ))
|
||
|
||
# CheckMK Status und Nachricht definieren
|
||
if [ $REMAINING_DAYS -le $crit ]; then
|
||
echo "2 SSL_CERT_$DOMAIN remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days CRITICAL - Das Zertifikat für $DOMAIN läuft in $REMAINING_DAYS Tagen ab. | remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days"
|
||
return 2
|
||
elif [ $REMAINING_DAYS -le $warn ]; then
|
||
echo "1 SSL_CERT_$DOMAIN remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days WARNING - Das Zertifikat für $DOMAIN läuft in $REMAINING_DAYS Tagen ab. | remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days"
|
||
return 1
|
||
else
|
||
echo "0 SSL_CERT_$DOMAIN remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days OK - Das Zertifikat für $DOMAIN läuft in $REMAINING_DAYS Tagen ab. | remaining_days=$REMAINING_DAYS;$warn;$crit;0;$max_days"
|
||
return 0
|
||
fi
|
||
}
|
||
|
||
# Hauptschleife zur Prüfung aller Domains
|
||
overall_status=0
|
||
for domain in "${DOMAINS[@]}"; do
|
||
check_certificate $domain
|
||
status=$?
|
||
if [ $status -gt $overall_status ]; then
|
||
overall_status=$status
|
||
fi
|
||
done
|
||
|
||
exit $overall_status |