Ich möchte ein Perl-Skript schreiben, das sich über Telnet bei Cisco-Switches anmeldet und die Ausgabe analysiert show mac-address-table
. Das Problem besteht darin, dass mir verschiedene Switches ein unterschiedliches Feldlayout anzeigen.
Der WS-C3548-XL zeigt die Felder in der Reihenfolge
Destination Address Address Type VLAN Destination Port
während der C2960 es wie
Vlan Mac Address Type Ports
Gibt es eine Möglichkeit, Show anzuweisen, die Felder in einer vordefinierten Reihenfolge zu drucken?
Antwort1
Abfragen der Geräte mit SNMP. Ich würde annehmen, dass die MIBs gleich sind, aber bei Cisco weiß man nie.
Antwort2
Nein, nicht dass ich wüsste.
Aber da Sie bereits Perl verwenden, überprüfen Sie einfach die erste Zeile. Von da an wissen Sie, was die Bedeutung der einzelnen Felder ist, und füllen Ihren Hash (ich hoffe, Sie verwenden einen!) entsprechend aus. Dies hat den zusätzlichen Vorteil, dass Sie in Zukunft andere Modelle mit einem weiteren Ausgabeformat unterstützen können. Während die „alten“ weiterhin unterstützt werden. Robuste Programmierung.
...Oh, und achten Sie darauf, das Leerzeichen im „Adresstyp“ zu berücksichtigen :)
Antwort3
Haben Sie an Skripting mit SNMP gedacht? Sie können externe Dienstprogramme wie snmpget/snmpwalk ausführen und die Ausgabe analysieren oder das Modul Net::SNMP verwenden.
Antwort4
SNMP wäre am besten. Aber denken Sie auch daran, dass der Ausgabemodifikator „include“ Regex-fähig ist. Sie können einfach die gewünschten Informationen abrufen, wenn Sie bei Perl-expect bleiben möchten.