Skip to content

ssh-Zugriff auf ProCurve-Switches automatisieren

In HP ProCurve und ssh habe ich dokumentiert, wie man einem ProCurve-Switch beibringen kann, per ssh zum Management erreichbar zu sein. Leider wird "ssh manger@switch <command>" nicht unterstützt, so dass man Expect braucht, um den Switch zu bedienen.

Nun sind TCL und ich nicht gerade die allerbesten Freunde, und ich erinnere mich mit Schaudern daran, wie ich vor Jahren den Status eines Infortrend-RAIDs mit Expect aus der seriellen Schnittstelle herausgekitzelt habe, um über den Nagios Alarm zu schlagen, wenn eine Platte ausfällt. Also machen wir's diesmal in Perl.

Noch schwerer wird's, wenn man die Ausgabe des Switches weiterverarbeiten möchte: Denn das, was aus dem Expect herausfällt, ist voller Steuerzeichen. Hier hilft Term::VT102, ein Perl-Modul, das im Speicher ein VT102-Terminal simuliert, dessen Bildschirm man nach Abschluß der geplanten Aktion auslesen kann. Das habe ich mit einem Scroll-Hook gelöst, der die Daten, die aus dem virtuellen Terminal herausscrollen, in ein Array schreibt. Zum Schluß werden dann einfach genug CRs in das Terminal gekippt, dass auch die letzte Bildschirmseite in unserem Array gelandet ist.

Um die Eigenheiten des Switches zu Umschiffen und sicherzustellen, dass die Daten trotzdem lesbar sind, muss man dem VT102 noch Teile der Cursorbewegung abgewöhnen: Der Switch positioniert den Cursor oft hart, und das terminal kommt dabei durcheinander, wenn die im Switch eingestellte Terminalgröße nicht richtig ist.

Continue reading "ssh-Zugriff auf ProCurve-Switches automatisieren"