In diesem Beitrag möchte ich euch eine auf SNMP angepasste macmon Klassendefinition für Aruba CX Switche vorstellen.
macmon selber hat bisher noch keine mit SNMP angepasste Klassendefinition im Angebot. (Stand: Juni 2023 / macmon v5.35.1)
UPDATE (18.8.2023)
Seit der macmon Version 5.36.1 ist eine Klasse seitens macmon enthalten. Wer jedoch nicht updaten kann oder will, kann selbstverständlich weiterhin den folgenden Artikel nutzen.
Einleitung
Die hier vorgestellte Definition ist leider nicht zu 100% auf SNMP basiert - aber das liegt eher noch an Aruba statt macmon.
Warum SNMP und nicht weiter die API nutzen? Ganz klar wegen Performance. Die Steuerung über API dauert in der Regel deutlich länger als die Steuerung über SNMP. Wem die Performance egal ist, der kann auch die von macmon bereitgestellt Klasse nutzen.
Voraussetzung - Was wird benötigt?
- macmon Version
>= 5.35.0 (einige Vorgängerversionen sollten auch funktionieren)
Ich empfehle grundsätzlich immer die aktuellste Version - Aruba CX Firmware
>= 10.xx (vorherige Versionen ab ca Q3-Q4/2022 könnten auch schon funktionieren)
Ich empfehle grundsätzlich immer die aktuellste Version - Zugang Aruba CX über CLI
- Zugang macmon mit Adminberechtigungen
Minimum müssen Klassen, Zugangsdaten und Netzwerkgeräte bearbeitet werden können
Definition der Klasse
Folgend wird die macmon Klassendefinition für Aruba CX für eine manuelle Anlage oder den Import über die API angeboten.
Dadurch das einige Methode noch die API benötigen muss der Switch API und SNMP Zugangsdaten zugewiesen haben.
Seit Aruba OS 10.12.xxx wird das Schalten von VLANs auch über SNMP unterstützt - allerdings keine Tagged-VLANs! Daher basiert die folgende Methode noch auf API für die VLANs.
Manuelle Anlage
Für die manuelle Anlage in macmon bitte einfach eine Klasse erstellen und die Methoden der Tabelle entsprechend auswählen. Die Spalte Typ gibt die nötige Art der Zugangsdaten an.
Vorgang | Methode | lesend / schreibend | Typ |
---|---|---|---|
Inventarstatus auslesen | ENTITY-MIB | lesen | SNMP |
Systeminformationen auslesen | lesen | SNMP | |
Interface Status auslesen | IF-MIB::ifOperStatus | lesen | SNMP |
Interfaces auslesen | IF-MIB::ifEntry | lesen | SNMP |
VLAN auslesen | Aruba API | lesen | API |
ARP auslesen | IP-MIB.ipNetToPhysicalEntry | lesen | SNMP |
MAC Adressen auslesen | BridgeMIB | lesen | SNMP |
Topologie auslesen | Topologie (LLDP, CDP) | lesen | SNMP |
Dot1X Status auslesen | Aruba API | lesen | API |
Interface (ent)sperren | IF-MIB::ifAdminStatus | schreiben | SNMP |
VLAN setzen | Aruba API | schreiben | API |
Dot1X Status setzen | Aruba API | schreiben | API |
Autorisation ändern | - | schreiben | - |
Konfiguration speichern | - | schreiben | - |
macmon API
1. Download Definition als JSON Datei
2. Import JSON über Windows PowerShell
Voraussetzung seitens macmon ist ein Admin Benutzer (oder der "admin" Benutzer selber) mit API Berechtigung.
Das folgende Skript komplett kopieren und in die PowerShell einfügen. Für die Ausführung wird nach IP/FQDN, Benutzername, Passwort und die oben angebotene Datei gefragt. Ein Rückgabewert von 200 zeigt eine erfolgreiche Ausführung an.
Name der Klasse nach Import: "ArubaCX_SNMP_ITW-YYYYMMTT" (kann in macmon umbenannt werden)
# Parameter abfragen `
$mmhost = Read-Host -Prompt 'macmon IP oder FQDN'; `
$mmuserpw = Get-Credential -Title "Bitte macmon Zugangsdaten eingeben" -Message " "; `
Add-Type -AssemblyName System.Windows.Forms; `
$mmfile = New-Object System.Windows.Forms.OpenFileDialog; `
$null = $mmfile.ShowDialog(); `
# API Call absetzen `
Invoke-WebRequest -SkipCertificateCheck -Uri "https://$mmhost/api/v1.1/networkdeviceclasses" `
-Method POST -ContentType "application/json" -Credential $mmuserpw -InFile $mmfile.Filename;
# Zertifikatschecks deaktivieren für die Dauer der Powershell Sitzung `
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$True} `
# Parameter abfragen `
$mmhost = Read-Host -Prompt 'macmon IP oder FQDN'; `
$mmuserpw = Get-Credential -UserName 'admin' -Message 'macmon Zugangsdaten'; `
Add-Type -AssemblyName System.Windows.Forms; `
$mmfile = New-Object System.Windows.Forms.OpenFileDialog; `
$null = $mmfile.ShowDialog(); `
# API Call absetzen `
Invoke-WebRequest -Uri "https://$mmhost/api/v1.1/networkdeviceclasses" `
-Method POST -ContentType "application/json" -Credential $mmuserpw -InFile $mmfile.Filename