Switchport des Servers ermitteln

This forum was archived to /woltlab and is now in read-only mode.
  • Hallo Community,


    gibt es ein Plugin mit dem ich mir für einen meiner Host ausgeben lassen kann, an welchem Switchport der Host angeschlossen ist?

    Die Ausgabe soll dann ungefähr so aussehen: "Switch xy Port xy".


    Gruß Tobi

  • Habe mich jetzt mal durch den Dschungel der OIDs gewühlt und gesehen das die MAC Adresse des Clients in eine Dezimalzahl umgewandelt wird und dann mit einer OID zusammengefasst wird und als value dann der Port ausgegeben wird.


    Beispiel:


    Switch: HP Procurve 2530-48G

    MAC hex (Client): 00:19:FF:FF:FF:00

    MAC dez (Client): 0.25.255.255.255.255.0

    OID= .1.3.6.1.2.1.17.4.3.1.2.0.25.255.255.255.255.0 = gewünschter Port


    Allerdings werden bei anderen Switches die OID mit der dez Mac auch Werte ausgegeben wodurch es Probleme gibt zu sagen "das ist der richtige Switch!".

    Die hex MAC ist auch bei den anderen Switches bekannt wodurch ich damit auch kein Ausschlusskriterium habe... .


    Vielleicht hat einer von euch ja schonmal damit zu tun gehabt und eine Idee.

  • Da wirst du wahrscheinlich nicht drum herum kommen, dir eine eigene Logik zu bauen.

    Jeder Hersteller wird dies anders abbilden.


    Die Lösung für den Procurve hast du ja schon gefunden.


    Ich würde hier ein Script schreiben, dass nachschaut, was für ein Switch es ist und je nachdem die entsprechende Logik zum Herausfinden bauen.

    Mehr kann ich dir leider nicht dazu sagen.

    Linux is dead, long live Linux


    Remember to NEVER EVER use git repositories in a productive environment if you CAN NOT control them

  • Hallo Kevin,


    ja, das mit dem Script habe ich soweit auch schon fertig, mich irritiert nur, dass die gleichen OIDs mit der dez Mac des Servers auch auf den anderen Switchen zu einem Ergebnis führt... Ergebnisse sind dann 78, 88 was ok wäre, allerdings sind da dann auch Ergebnisse dabei die in die Portrange des Switches reingehen und dadurch die Identifizierung des richtigen Ports schwerfällt.


    EDIT:


    Habe vielleicht eine Möglichkeit gefunden, wenn ich ein snmpwalk auf die OID .1.3.6.1.4.1.11.2.14.11.5.1.9.4.2.1.1. mache und dann auf .1 - -48 begrenze, werden alle Macs und Ports in der OID zusammengefasst:


    Beispiel: OID+Port+MAC = Wert(Port)

    iso.3.6.1.4.1.11.2.14.11.5.1.9.4.2.1.1. + 10 + 0.25.255.255.255.255.0 = 10

    Wenn ich die Daten nun in eine Txt ablegen lasse und dann nach der MAC filtere, gibt es nur einen Treffer.


    Ich werde es nochmal genauer testen und nochmal sagen ob es klappt.


    PS: Kann man den snmpwalk auf eine bestimmte OID-Range beschränken?

  • Das mit der Beschränkung des SNMPWalks ist eine gute idee.


    Mir fallen jetzt nur Lösungen ein, die mit den Parent Child Relations in Icinga zu tun haben, um das alles einzuschränken.

    Linux is dead, long live Linux


    Remember to NEVER EVER use git repositories in a productive environment if you CAN NOT control them

  • Das mit der Beschränkung des SNMPWalks ist eine gute idee.


    Mir fallen jetzt nur Lösungen ein, die mit den Parent Child Relations in Icinga zu tun haben, um das alles einzuschränken.

    Ich werde es wahrscheinlich so realisieren, dass ich eine for Schleife baue die die OID 1.3.6.1.4.1.11.2.14.11.5.1.9.4.2.1.1. nimmt und am Ende von 1 bis 48 hochzählt und diese dann in der Schleife nach der gesuchten dez MAC durchsucht und bei Treffer eine Variable füllt.

    Schwieriger wird es da das Script am Anfang noch nicht weiß auf welchem Switch der Client angeschlossen ist, daher muss ich im Vorfeld eine Liste erzeugen die alle aktuellen Switche des Standortes zusammenfasst und diese dann wiederum anhand der SystemobjectID zu einem bestimmten Typ zuordnet (also 2530 oder 1810er als Beispiel), da sich zwischen denen beiden Typen die OIDs wieder unterscheiden um dann nacheinander die Switche zu prüfen und die benötigte Information zu finden.

    Für die Auflistung der entsprechenden Switche würde ich mir die Messdaten von Graphite zu nutze machen und mit einem grep auf das whisper-Verzeichnis alle Ordnernamen mit den Namen der Switche des Standortes (geht ganz einfach wenn die Bezeichnung genau zuordenbar ist) in eine Textdatei schreiben, so hätte ich auch neue Switche mit drin und müsste keine separate Liste führen. Das ist jetzt nur eine Idee mag sein das es auch viel einfacher geht :)

  • Andere Idee, du könntest ja, wenn du die Switches eh schon überwachst, schauen welche MAC, sich auf welchem Switch, an welchem Port anmeldet und dies in eine liste schreiben, durch die Icinga dann Partent-Child relations erstellen kann.


    Wäre wahrscheinlich initial etwas mehr aufwand, bringt aber deutlich mehr Funktionalität mit.

    Linux is dead, long live Linux


    Remember to NEVER EVER use git repositories in a productive environment if you CAN NOT control them

  • Danke für die Idee, hatte den Part schon sogut wie fertig, daher habe ich es erstmal über das Whisper-Verzeichnis gelöst.

    Das Script funktioniert für HP Procurve 2530, 2510 und 1800 (1810 bin ich noch am testen).

    Nach der Testphase würde ich es in Icinga einbauen und dann noch damit testen.


    Ist allerdings sehr auf meine Strukturen zugeschnitten und sicherlich nicht das Gelbe vom Ei in Sachen Programmierung.


    The post was edited 2 times, last by Tobi.B. ().

  • ah nen schönes Bashscript, persönlich bevorzuge ich ja python ;)

    Linux is dead, long live Linux


    Remember to NEVER EVER use git repositories in a productive environment if you CAN NOT control them

  • ah nen schönes Bashscript, persönlich bevorzuge ich ja python ;)

    Da ich von beides nicht wirklich viel Ahnung habe und das Meiste mir zusammen gegoogelt habe hätte es auch eine andere Sprache sein können :D

    Sobald es im Icinga lauffähig ist werde ich nochmal informieren.


    PS: was für Vorteile hat Phyton in Bezug auf Icinga Plugins?

  • Python ist schneller als Bash. Dazu kommen noch haufenweise lib's (z.B. die Icinga API lib) und eine einfacher lesbare Syntax (bash kann ziemlich verwirrend sein).

  • Ich finde die schiere Anzahl an Libs schön, man muss das rat nicht neu erfinden

    Linux is dead, long live Linux


    Remember to NEVER EVER use git repositories in a productive environment if you CAN NOT control them