'test.sh' löschen

This commit is contained in:
2023-03-13 06:12:16 +01:00
parent 4574c9a188
commit 6c38a5f817

209
test.sh
View File

@@ -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&currentPageSize=100&searchKey=${strDevice}"
exit 0
fi
#es wurde kein passender Modus gefunden
echo "Unkown: Ungueltige Angabe des Moduls"
eval ${strLogOutAndCleanUp}
exit 3
########## Modi Ende ##########