Einleitung
Das hier ist eine Toolsamlung auf Python-Basis, welche mit Aruba Instant Virtual Controllern kommuniziert und Debug-Ausgaben liefert. Ich habe sie mit Gemini in Python geschrieben und lerne dadurch. Es hat ein paar Rückmeldungen von Euch gegeben und ich folge Euren Wünschen, aber auch meinen, um mir die Arbeit zu erleichtern.
Im Moment besteht die Sammlung aus diesen Teilen:
- aruba_helper.py 1.0.6 => Kernbiblothek, erweitert für ap_check_V7.2
- config.json => Konfigurationsdatei
- requirements.txt => erforderliche Python Bibliotheken
- ap_check.py 8.0.0 => Neu – Jetzt zusätzlich mit DNS-Prüfroutine
- ap_swarm_reload 1.0.d =>kann einen oder mehrere Cluster neu Starten
- ap_swarm_update 4.1.0 => Verändertes Logging, Neues Verhalten bei homogenen Clustern
- ap_offline_delete 1.3.0 => kann einen oder mehrere AP’s aus der Offline-Tabelle von ap_check löschen
Was macht das Tool?
Anbei ein aktualisierter Entwurf meines Python-Scripts, welches vom jeweiligen Schwarm-Conductor (Master) die AP’s auflistet (show aps), diese dann threaded per show interface durchbrömmelt, um nachzufragen, ob sie denn Gigabit angebunden sind, und oder ob CRC-Fehler auf einem oder beiden Interfaces aufgetreten sind, sprich sie schaun da mal in’s Glas, wie spät das ist. Die fehlerhaften AP’s (meint Zuleitungen) mögen dann in einer CSV gelistet werden.
Erfolgreich getestet habe ich das mit LTS Instant OS 8.10.0.16 auf 305-345, 505-555,374,375,574,575,577. Die aktuelle 8.10.0.17 ist ja gerade kaputt bzw. macht im ARM was nur sie und sonst keiner will, ist also von einer Berliner Asi-Plaste nicht mehr zu unterscheiden. Ich frage mich inzwischen wirklich, wie viel Vertrauen die da noch verbrennen wollen. Aber: Mit 8.10.x sollte das Script auf den oben erwähnten AP’s funktionieren, bei anderen Instant OS Versionen ist mir noch unklar, wie sich das Parsing der AP-Übersicht verhält. Ich freue mich sehr über eine kurze Mail mit Versionsnummer und funktioniert oder funktioniert nicht.
Wichtige Hinweise
Anwendung auf eigene Gefahr! Du musst die Ausgabe bitte immer auch selbst prüfen. Schau Dir bitte die als fehlerhaft erkannten AP’s nochmal selbst an. Ich bin mir inzwischen zwar relativ sicher, dass ich da im Parsen nicht daneben liege. Verbesserungsvorschläge sind willkommen.
Nutzbar ist das Tool in Aruba Instant 8.10.0.0 – Getestet bis 8.10.0.19
Bitte habe Verständnis: Support kann ich keinen leisten!
Installation & Vorbereitung
1. Python installieren
- Das Script benötigt Python, falls nicht installiert, findbar unter python.org/downloads/. Achtung: Die Pfadvariable muss unter Windows gesetzt werden (Add Python to PATH), und es sollte mit Admin-Rechten installiert werden.
2. Tool herunterladen & Bibliotheken installieren
- Tool am Ende dieser Seite herunterladen und entpacken.
- Eine Konsole (Eingabeaufforderung/PowerShell) starten und in das Verzeichnis wechseln, in das Du das Tool entpackt hast.
- Dort die erforderlichen Bibliotheken für Python mit dem folgenden Befehl nachinstallieren:
pip install -r requirements.txt
Genutzte Bibliotheken
- paramiko: Damit lassen sich ssh-Verbindungen herstellen. Auch jene, die nur mit älteren Cipher-Suites (+ssh-rsa) funktionieren, so wie bei den Aruba VC’s erforderlich. Das war ein ziemliches Chrüsimüsi.
- keyring: Um – sofern möglich – den Windows-Anmeldespeicher zu verwenden. Dies soll eine sichere Speichermethode für Zugangsdaten sein, wobei „sicher“ immer relativ zu sehen ist.
- pycryptodome: Um wenigstens halbwegs Sicherheit bei der Ablage der Zugangsdaten zu haben, so dass die Zugangsdaten nicht im klartext sichtbar sind. Der Anwender ist selbst für seine Sicherheit verantwortlich, ich weise im Script darauf hin.
Konfiguration & Anwendung
Vor der ersten Ausführung muss die Datei config.json bei Bedarf angepasst werden.
{
"//_comment_main": "Hauptkonfiguration für Ziel-IPs und globale Einstellungen.",
"conductor_ips": [
"10.20.20.5",
"10.20.30.5",
"10.20.40.5"
],
"timeout_seconds": 30,
"updatewait_seconds": 10,
"num_threads": 10,
"upd_threads": 20,
"//_comment_switches": "Globale Schalter zum Aktivieren (true) oder Deaktivieren (false) von Prüfroutinen.",
"crccheck": true,
"_crccheck_comment": "Prüft auf CRC-Fehler auf den Ethernet-Ports.",
"check_monitor_mode": true,
"_check_monitor_mode_comment": "Meldet APs, die im 'monitor'-Modus sind.",
"check_power_status": true,
"_check_power_status_comment": "Prüft auf eine eingeschränkte Stromversorgung (PoE).",
"check_ip_anomaly": true,
"_check_ip_anomaly_comment": "Prüft auf falsche Subnetze oder große Lücken im IP-Bereich.",
"//_comment_thresholds": "Schwellenwerte für die Problemerkennung.",
"minspeed": 1000,
"_minspeed_comment": "Minimale Geschwindigkeit in Mb/s für eth0 (und eth1, falls nicht ignoriert).",
"mincrc": 100,
"_mincrc_comment": "Maximale Anzahl an erlaubten CRC-Fehlern.",
"eth1_ignore_speed": true,
"_eth1_ignore_speed_comment": "Wenn true, wird die Geschwindigkeit von eth1 nicht geprüft.",
"reloadtimeout": 120,
"_reloadtimeout_comment": "Maximale Wartezeit in Sekunden, bis ein Conductor nach einem 'reload' offline sein muss.",
"//_comment_language": "Diese Werte sollten nur geändert werden, wenn die Sprache der APs nicht Englisch ist.",
"language_terms": {
"header_ip": "IP Address",
"header_serial": "Serial #",
"header_age": "Age",
"interface_speed": "Speed",
"interface_duplex": "duplex",
"interface_address": "address is",
"errors_crc": "Receive CRC errors"
}
}
Erklärung der config.json
Allgemeine Einstellungen
conductor_ips
: Die IP(s) der Master APs oder der Virtual Controller. Dieser Wert wird überschrieben, wenn Du eine IP-Adresse oder mehrere (kommasepariert) direkt beim Start des Skripts angibst (z.B.py ap_check.py 10.x.x.x
).timeout_seconds
: Die maximale Wartezeit in Sekunden, die das Skript auf eine Verbindung zu einem AP wartet. Reagiert ein AP nicht innerhalb dieser Zeit, wird er als „crashed“ markiert.num_threads
: Die Anzahl der APs, die gleichzeitig (parallel) überprüft werden. Ein Wert von10
beschleunigt den gesamten Vorgang erheblich.
Anomalitätenroutine
"check_ip_anomaly": true
: Hauptschalter für die gesamte IP-Anomalie-Prüfung. Wenntrue
, führt das Skript die zweistufige Prüfung (falsches Subnetz & statistische Ausreißer) durch."anomaly_gap_factor": 10
: Steuert die Empfindlichkeit der statistischen Ausreißer-Erkennung. Ein höherer Wert macht die Erkennung unempfindlicher, ein niedrigerer Wert empfindlicher.
Fehler- und Schwellenwerteinstellungen
minspeed
: Definiert die erwartete Mindestgeschwindigkeit für dieeth0
-Schnittstelle in Mb/s (z.B. 1000).crccheck
: Ein einfacher An/Aus-Schalter (true
/false
) für die Überprüfung von CRC-Fehlern.mincrc
: Notiert Fehler bei AP’s erst ab dieser Anzahl von Fehlern, um ein Grundrauschen auszuklammern.eth1_ignore_speed
: Wenntrue
, wird die Geschwindigkeit voneth1
ignoriert, da eine niedrige Geschwindigkeit hier oft nur einen unbelegten Port anzeigt.
Spracheinstellungen
language_terms
: Enthält alle Begriffe, nach denen das Skript in der Ausgabe der Aruba-Geräte sucht. Falls die Sprache der Geräte von Englisch abweicht, können hier die Begriffe angepasst werden.
Anwendung (Beispiele)
Starten lässt sich das Tool über die Kommandozeile:
# Einzelnen VC prüfen
py ap_check.py <vc-IP>
# Mehrere VC's prüfen
py ap_check.py <vc-IP1>,<vc-IP2>,<vc-IP3>
# Mit Logging
py ap_check.py 10.20.30.200 --log
# Airwave-Export importieren
py ap_check.py --importfile c:\users\max\ap_list_12345678.csv
# Hilfe anzeigen
py ap_check.py --help
Wenn keine IP-Adresse angegeben wird, verwendet das Skript die IPs aus der config.json
. Als Ergebnis erhalten Sie CSV-Dateien, die alle problematischen APs auflisten.
Download
Changelog
AP Tools v1.6.1
Diese Version fokussierte sich auf die massive Verbesserung der Zuverlässigkeit und Benutzerführung von ap_offline_delete.py
(jetzt v1.3.0).
- Robuster Löschvorgang durch Verifizierung
- Kern-Änderung: Das Skript verlässt sich nicht mehr auf potenziell unzuverlässige Konsolen-Meldungen (
"commit saved"
). Stattdessen wird nach dem Löschversuch dierunning-config
des Conductors erneut ausgelesen und überprüft. - Ein Löschvorgang wird nur noch dann als Erfolg gemeldet, wenn die MAC-Adressen nachweislich aus der finalen Konfiguration verschwunden sind. Dies verhindert „False Positives“.
- Kern-Änderung: Das Skript verlässt sich nicht mehr auf potenziell unzuverlässige Konsolen-Meldungen (
- Intelligente Fehlererkennung
- Das Skript erkennt nun automatisch die spezifische Fehlermeldung
"Configuration denied by AirWave management"
. - In diesem Fall bricht das Skript den Versuch ab und gibt dem Benutzer die klare und direkte Handlungsanweisung, den Verwaltungsmodus des Schwarms zu ändern.
- Das Skript erkennt nun automatisch die spezifische Fehlermeldung
- Kosmetik & Feinschliff
- Die Zählung im Abschlussbericht wurde korrigiert. Es wird nun die Gesamtzahl der erfolgreich gelöschten APs angezeigt, anstatt nur die Anzahl der bearbeiteten Conductors.
- Ein Log-Verzeichnis wird nur noch dann erstellt, wenn der
--log
Parameter aktiv vom Benutzer gesetzt wird.
AP Tools v1.6.0
Diese Version konzentrierte sich auf die Erweiterung von ap_check.py
(jetzt v8.0.0) um eine wichtige Diagnosefunktion.
- Neues Feature: DNS-Check für Member-APs
- Das Skript führt nun für jeden einzelnen Member-AP einen performanten DNS-Auflösungstest durch.
- Um lange Wartezeiten zu vermeiden, wird der
ping
-Befehl in einer interaktiven Sitzung mit kurzem Timeout ausgeführt, der nur die erste, entscheidende Antwortzeile auswertet. - Zu Beginn der Prüfung wird der vom Conductor verwendete DNS-Server ausgelesen und zur Information angezeigt.
- Neue Berichtsdatei:
ap_dns_errors.csv
- Um den Hauptbericht übersichtlich zu halten, werden APs mit DNS-Fehlern (Timeout, Fehlgeschlagen) in eine separate CSV-Datei geschrieben.
- Konfiguration & Kosmetik
- In der
config.json
kann nun das Ziel für den DNS-Check (dns_check_host
) festgelegt werden. - Die Ergebnis-Ordner werden jetzt mit dem Präfix
ap_check_
erstellt (z.B.ap_check_2025-08-25-17-30-00
).
- In der
Version 1.1.0: Neue Werkzeuge für Neustart und Bereinigung
Diese Version erweitert die ap_tools
-Suite um zwei neue, leistungsstarke Skripte und verbessert die allgemeine Stabilität.
- Neues Werkzeug
ap_swarm_reload.py
: Ein Tool zum sicheren und kontrollierten Neustarten ganzer Aruba-Swarms. Das Skript prüft die Erreichbarkeit der Geräte, holt eine Bestätigung vom Benutzer ein, verarbeitet interaktive Abfragen (y/n
) und überwacht den erfolgreichen Neustart-Prozess. - Neues Werkzeug
ap_offline_delete.py
: Ein Skript zum Bereinigen von Conductor-Konfigurationen. Es liest eine CSV-Datei mit zu löschenden APs, prüft intelligent vorab, ob diese überhaupt noch in der Konfiguration vorhanden sind, und entfernt sie gezielt. Eine zusätzliche Sicherheitsabfrage vor dem Löschen verhindert ungewollte Änderungen. - Stabilität und Benutzerfreundlichkeit: Die Abfrage der Anmeldeinformationen wurde über alle Skripte hinweg vereinheitlicht und robuster gestaltet, um Fehleingaben besser abzufangen. Diverse kleinere Bugs im Ablauf wurden im Zuge der Entwicklung behoben.
Version 1.0.0 (ehem. v7.0): Architektonisches Refactoring
Diese Version markiert den Neustart des Projekts als ap_tools
-Suite und stellt ein grundlegendes architektonisches Refactoring dar, um die Wartbarkeit und Wiederverwendbarkeit des Codes für zukünftige Projekte zu verbessern.
- Einführung der
aruba_helper.py
-Bibliothek: Alle Kernfunktionen für die SSH-Kommunikation, die Anmeldeinformations-Verwaltung (keyring
,pycryptodome
), die Abhängigkeiten-Prüfung und die Abfrage von Conductor-Daten wurden in eine zentrale Helper-Bibliothek ausgelagert. - Modularisierung von
ap_check.py
: Das Hauptskript wurde entschlackt und importiert nun die ausgelagerten Kernfunktionen. Es enthält nur noch die Logik, die spezifisch für die Überprüfung und das Reporting von AP-Fehlern ist. - Zukunftssicherheit: Die neue modulare Struktur schafft eine stabile und wiederverwendbare Basis für zukünftige Automatisierungs-Werkzeuge und stellt sicher, dass Verbesserungen an der Kernlogik allen darauf aufbauenden Skripten zugutekommen.
Ältere Changelogs (Version 5.x – 6.x)
Version 6.7: Werkzeuge zur manuellen (--delete-credentials
) und automatischen Bereinigung von veralteten Anmeldedaten hinzugefügt.
Version 6.6: Texte im Menü zur Auswahl der Anmeldedaten präzisiert und um Links zur Dokumentation der verwendeten Bibliotheken erweitert.
Version 6.5: Grundlegende Überarbeitung der Anmelde-Logik mit „Pre-Flight-Check“ für einen robusteren Ablauf.
Version 6.4: Anpassung der config.json: Schalter für neue Prüfungen sowie Kommentare hinzugefügt.
Version 6.3: Stabiler Meilenstein nach umfangreichen Bugfixes in den Bereichen Parsing, Fehlererkennung und Reporting.
Version 6.2: Der Fehlerbericht (ap_errors.csv
) zeigt nun wieder den exakten Power-Status zur detaillierten Analyse an.
Version 6.1: Das Skript legt nun für jeden Durchlauf automatisch einen neuen Ordner mit Zeitstempel an.
Version 6.0: Fehlerbericht auf Englisch umgestellt (ap_errors.csv
) und Logik für den Power-Status korrigiert.
Version 5.9: Performance optimiert, Firmware-Kompatibilitäts-Check, detailliertere Zusammenfassung und Anzeige der Skript-Version hinzugefügt.
Version 5.8: Neue Prüfroutine zur Erkennung von Problemen mit der Stromversorgung (PoE-Status) hinzugefügt.
Version 5.7: Erkennung des „monitor“-Modus als Fehler implementiert und eine „Problem-Grund“-Spalte zum Fehlerbericht hinzugefügt.
Version 5.6: Abarbeitung der Access Points nach IP-Adressen sortiert und das Parsen der AP-Liste flexibler gestaltet.
Version 5.5: Tippfehler in der Betriebssystem-Erkennung behoben, wodurch die Auswahl des Windows Credential Managers wiederhergestellt wurde.
Version 5.4.1: Ursprüngliche, flexible CSV-Importfunktion aus Version 5.0 in die stabilisierte Codebasis integriert.
Version 5.4: Umstellung der Kommandozeilen-Verarbeitung auf das robuste argparse
-Modul.
Version 5.3: Stabilisierung der show aps
-Analyse durch einen regulären Ausdruck.
Version 5.2: Komplette Überarbeitung der Logik zum Speichern und Laden von Anmeldeinformationen.