From 6c38a5f8173f05aad8be2e88f89ab40f280ba3f2 Mon Sep 17 00:00:00 2001 From: Daniel Wenzel Date: Mon, 13 Mar 2023 06:12:16 +0100 Subject: [PATCH] =?UTF-8?q?'test.sh'=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test.sh | 209 -------------------------------------------------------- 1 file changed, 209 deletions(-) delete mode 100755 test.sh diff --git a/test.sh b/test.sh deleted file mode 100755 index 86bc636..0000000 --- a/test.sh +++ /dev/null @@ -1,209 +0,0 @@ -#!/bin/bash - -############################################################# -# -# check_omada -# -# Version 1.0 -# -# Ein Plugin fuer Icinga / Nagios -# zur ueberwachung und Auswertung eines -# Omada-Controllers ab Version 5 -# -# Urheber: Daniel Wenzel -# Kontakt: daniel@klenzel.de -# -# -# Abhaengigkeiten: -# - 'jq' -# - 'curl' -# -# Beispiel fuer Debian: apt-get install jq curl -# -# --------------------------------------------- -# -# 1.0 - Changelog: -# -# 20230312 -# - Initiale Version -# -# -############################################################# - -#Funktionen -function showUsage { - echo " - Benutzung: $0 [Parameter] - - -H Hostname / IP-Adresse des Omada Controllers - - -P Port (Standard = 443) des Omada-Controllers - - -u Benutzername - - -p Passwort - - -s Angabe der Seiten-ID (nicht Name!) - - -m Modul - 'Count-EAPUsers' => Zeigt auf dem Accesspoint angemeldete Nutzer an - 'Get-DeviceLoad' => Gibt CPU-Auslastung aus - 'Get-DeviceMem' => Gibt Arbeitsspeicher-Auslastung aus - 'Get-PortStat' => Zeigt Traffic-Statistiken eines Ports - 'Show-Updates' => Zeigt, ob fuer den Unifi-Controller Aktualisierungen verfuegbar sind - 'Show-Connection' => Prueft, ob ein Geraet am Omada-Controller angemeldet ist - 'Show-PoEStatus' => Zeigt die verbleibende PoE-Kapazitaet an - - -i (nur bei Get-PortStat notwendig) Angabe des abzufragenden Ports - - -d Angabe des abzufragenden Geraets - - -w Angabe, unter welchem Wert der Status 'Warning' ausgegeben werden soll - 'Count-Users' => Warnung, wenn Anzahl Nutzer kleiner als der definierte Warning-Wert - Eingabe im Format: 'n' - 'Active-Alarms' => Ab dieser Anzahl von Alarmmeldungen wird der Status 'Warning' ausgeben - Eingabe im Format: 'n' - 'Offline-APs' => Ab dieser Anzahl nicht verfuegbarer APs wird der Status 'Warning' ausgeben - Eingabe im Format: 'n' - 'Has-Updates' => Ab dieser Anzahl von gefundenen Upgrades wird der Status 'Warning' ausgeben - Eingabe im Format: 'n' - 'Not-Adopted' => Ab dieser Anzahl nicht zugewiesener Accesspoints wird der Status 'Warning' ausgeben - Eingabe im Format: 'n' - 'Get-DeviceLoad' => Ist die Load der letzten Minute größer als der angegebene Wert, wird der Status 'Warning' ausgeben - Eingabe im Format: 'n.nn' - 'Get-DeviceMem' => Ist die Auslastung des Arbeitsspeichers höher als der angegebene Wert, wird der Status 'Warning' ausgeben - Eingabe im Format: 'nn' (z.B. '80' fuer 80% Auslastung) - 'Get-DeviceUsers' => Gibt die maximale Anzahl der mit einem AP verbundenen Nutzer an, ab der der Status 'Warning' ausgegeben wird - Eingabe im Format: 'n' - 'Get-DeviceGuests' => Gibt die maximale Anzahl der mit einem AP verbundenen Gaeste an, ab der der Status 'Warning' ausgegeben wird - Eingabe im Format: 'n' - 'Show-DevLastSeen' => Gibt die vergangenen Sekunden der letzten Sichtung an, ab die der Status 'Warning' ausgegeben wird - - -c Angabe, unter welchem Wert der Status 'Critical' ausgegeben werden soll - Erlaeuterungen analog zu 'Warning' - " -} - - -#Paramter verarbeiten -while [ "$1" != "" ]; do - case "$1" in - -H) shift; strHost="$1";; - -P) shift; intPort="$1";; - -u) shift; strUsername="$1";; - -p) shift; strPassword="$1";; - -m) shift; strModus="$1";; - -i) shift; strInterface="$1";; - -d) shift; strDevice="$1";; - -s) shift; strSeite="$1";; - -w) shift; intWarning="$1";; - -c) shift; intCritical="$1";; - *) showUsage; exit 3;; - esac - shift -done - -if [ -z $strHost ] || [ -z $strUsername ] || [ -z $strPassword ] || [ -z $strModus ] || [ -z $strDevice ] || [ -z $strSeite ]; then - showUsage - exit 1 -fi - -#if ( [ "$strModus" == "Get-PortStat" ] ) && ( [ -z $strInterface ] ) ; then -# showUsage -# exit 1 -#fi - - - -#if ( [ "$strModus" == "Get-DeviceLoad" ] || [ "$strModus" == "Get-DeviceMem" ] || [ "$strModus" == "Count-EAPUsers" ] || [ "$strModus" == "Show-PoEStatus" ] ) && ( [ -z $intWarning ] || [ -z $intCritical ] ) ; then -# showUsage -# exit 1 -#fi - -strDevice=$(echo ${strDevice^^}) - - -if [ -z $intPort ] ; then - intPort=443 -fi - - - -################# - -strJQBinary=$(which jq) -if [ $? -ne 0 ] ; then - echo "Bitte den JSON-Prozessor ${strJQBinary} installieren" - exit 3 -fi - -strCurlBinary=$(which curl) -if [ $? -ne 0 ] ; then - echo "Bitte das Paket curl installieren" - exit 3 -fi - - -#Meta -intRandom=$(( $RANDOM % 100000 )) -strBaseURL="https://${strHost}:${intPort}" -strCookieFile="/tmp/omada_${intRandom}.cookie" -strCurlCommand="${strCurlBinary} --silent --cookie ${strCookieFile} --cookie-jar ${strCookieFile} --insecure" -#strLogOutAndCleanUp="${strCurlCommand} $strBaseURL/logout > /dev/null 2>&1 ; rm -f ${strCookieFile}" -strLogOutAndCleanUp="rm -f ${strCookieFile}" - -#Anmelden am Controller -intControllerID=$(${strCurlCommand} "${strBaseURL}/api/info" | jq -r .result.omadacId) -intToken=$(${strCurlCommand} -X POST -H "Content-Type: application/json" "${strBaseURL}/${intControllerID}/api/v2/login" -d '{"username": "'"${strUsername}"'", "password": "'"${strPassword}"'"}' | ${strJQBinary} -r .result.token) -strLoginStatus=$(${strCurlCommand} -X GET -H "Content-Type: application/json" -H "Csrf-Token: ${intToken}" "${strBaseURL}/${intControllerID}/api/v2/loginStatus" | ${strJQBinary} -r .msg) - - -if [ "$strLoginStatus" != "Success." ] ; then - echo "Unknown: Anmeldung am Omada-Controller fehlgeschlagen" - eval ${strLogOutAndCleanUp} - exit 2 -fi - - - -########## Modi Beginn ########## - - - -# [Count-EAPUsers] Zeigt auf dem Accesspoint angemeldete Nutzer an -# ------------------------------------------- -if [ "$strModus" == "Count-EAPUsers" ] ; then - - #intAngemeldeteNutzer=$(${strCurlCommand} -X GET -H "Content-Type: application/json" -H "Csrf-Token: ${intToken}" "${strBaseURL}/${intControllerID}/api/v2/sites/${strSeite}/devices" | jq '.result | map(. | select(.name=="'${strDevice}'")) | . [] .clientNum') -strDeviceMAC=$(${strCurlCommand} -X GET -H "Content-Type: application/json" -H "Csrf-Token: ${intToken}" "${strBaseURL}/${intControllerID}/api/v2/devices?searchKey=${strDevice}" | ${strJQBinary} -r .result.devices[0].mac) - -curl --cookie ${strCookieFile} --cookie-jar ${strCookieFile} --insecure -X GET -H "Content-Type: application/json" -H "Csrf-Token: ${intToken}" "${strBaseURL}/${intControllerID}/api/v2/sites/${strSeite}/eaps/${strDeviceMAC}" - -exit 0 - -fi - - - - -# [Get-PortStat] Zeigt Statistiken eines Switchports an -# ------------------------------------------- -if [ "$strModus" == "Get-PortStat" ] ; then - - curl --cookie ${strCookieFile} --cookie-jar ${strCookieFile} --insecure -X GET -H "Content-Type: application/json" -H "Csrf-Token: ${intToken}" "${strBaseURL}/${intControllerID}/api/v2/sites/${strSeite}/insight/switch/port/overview?currentPage=1¤tPageSize=100&searchKey=${strDevice}" - - - exit 0 - -fi - - - - - - -#es wurde kein passender Modus gefunden -echo "Unkown: Ungueltige Angabe des Moduls" -eval ${strLogOutAndCleanUp} -exit 3 -########## Modi Ende ##########