
In diesem Beitrag möchte ich euch angepasste macmon Klassendefinitionen für Juniper Switche vorstellen.
macmon selber hat bisher noch keine vordefinierten oder vollständigen Klassendefinition im Angebot. (Stand: Juli 2023 / macmon v5.35.1)
Einleitung
Warum eine eigene Klasse?
Generell werden Klassen, sofern macmon keine Definition hat, dynamisch generiert. Daher sind die Namen der Klassen teilweise kryptisch oder einfach nicht gut lesbar. Zusätzlich sind sie nicht immer vollständig und teilweise funktionieren sie nicht richtig.
Dies ist ein normales Verhalten in macmon. Wer sich die Zeit sparen will eigene Klassen zu erstellen und die nötigen Methoden herauszufinden, der ist hier genau richtig! 😊
Voraussetzung - Was wird benötigt?
- macmon Version
= 5.35.0 (Vorgängerversionen sollten auch funktionieren)
Ich empfehle grundsätzlich immer die aktuellste Version - Juniper Firmware
>= 12.3 (vorherige Versionen unterstützen nicht alle Funktionen!)
Ich empfehle grundsätzlich immer die aktuellste Version - Juniper Switch Modelle
Getestet wurde mit folgenden Modellen: EX2200, EX2300, EX3300, EX4200, EX4300, EX4500, EX4600 - Zugang Juniper Switche
Für die Klassen muss der Zugriff über SNMP und SSH ermöglicht werden. Auf diese Konfiguration gehe ich hier aber nicht ein. - 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 Juniper für eine manuelle Anlage oder den Import über die API angeboten.
Juniper hat Switche mit Enhanced Layer 2 Software (ELS) und auch ohne im Umlauf. Je nach Switch muss die eine oder andere Klasse verwendet werden. Unter dieser Webseite gibt es eine Übersicht der ELS Switche von Juniper: Enhanced Layer 2 Software (ELS).
Teilweise gibt es auch Switche die die ELS Software ab einem bestimmten Release erhalten haben. Daher bitte den verlinkten Artikel für die richtige Wahl zu Rate ziehen.
Solltet Ihr die falsche Klasse wählen explodiert aber nichts - die Methode funktioniert nur nicht richtig. 😉
Manuelle Anlage (Juniper ohne ELS Software)
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 | Juniper Fusion (JunOS) (Technical Preview) | lesen | SNMP |
Systeminformationen auslesen | SNMPv2-MIB::system | lesen | SNMP |
Interface Status auslesen | IF-MIB::ifOperStatus | lesen | SNMP |
Interfaces auslesen | IF-MIB::ifEntry | lesen | SNMP |
VLAN auslesen | Juniper | lesen | SSH |
ARP auslesen | MIB-II.ipNetToMediaEntry | lesen | SNMP |
MAC Adressen auslesen | Q-Bridge (Juniper mit ifStackTable) | lesen | SNMP |
Topologie auslesen | Topologie (LLDP ohne Port-Mapping, mit ifStackTable) | lesen | SNMP |
Dot1X Status auslesen | - | lesen | - |
Interface (ent)sperren | Juniper Shell | schreiben | SSH |
VLAN setzen | Set VLAN Juniper Shell | schreiben | SSH |
Dot1X Status setzen | - | schreiben | - |
Autorisation ändern | - | schreiben | - |
Konfiguration speichern | - | schreiben | - |
Manuelle Anlage (Juniper mit ELS Software)
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 | Juniper Fusion (JunOS) (Technical Preview) | lesen | SNMP |
Systeminformationen auslesen | SNMPv2-MIB::system | lesen | SNMP |
Interface Status auslesen | IF-MIB::ifOperStatus | lesen | SNMP |
Interfaces auslesen | IF-MIB::ifEntry | lesen | SNMP |
VLAN auslesen | Juniper (L2) | lesen | SSH |
ARP auslesen | MIB-II.ipNetToMediaEntry | lesen | SNMP |
MAC Adressen auslesen | Q-Bridge (Juniper mit ifStackTable) | lesen | SNMP |
Topologie auslesen | Topologie (LLDP ohne Port-Mapping, mit ifStackTable) | lesen | SNMP |
Dot1X Status auslesen | - | lesen | - |
Interface (ent)sperren | Juniper Shell | schreiben | SSH |
VLAN setzen | Set VLAN Juniper Shell | schreiben | SSH |
Dot1X Status setzen | - | schreiben | - |
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: “Juniper_ohne_ELS” oder “Juniper_mit_ELS” (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
Andere Tools für die Nutzung einer API
Wer mehr mit API arbeiten möchte dem würde ich ein Tool wie Postman ans Herz legen. Mit etwas Einarbeitung lassen sich in der GUI schnell und einfach diverse API Calls ausführen. macmon bietet auch eine Datei zum Download den man als Collection importieren kann. Dann gehts noch schneller 😉