Kontaktfreudig
Mit PAC auf entfernte Rechner zugreifen
Linux und das schöne Leben offerieren oft viele Alternativen. Eine bequeme Lösung für den Fernzugriff auf andere Rechner bietet der SSH-, Telnet- und FTP-Client PAC. Der Perl Auto Connector [1], so sein voller Name – steht unter der GPLv3 und wurde von David Torrejon Vaquerizas in Perl implementiert. Der Client für den Fernzugriff merkt sich bereits benutzte Verbindungen, kann mit Proxies umgehen und kommt mit Expect klar, einem in TCL geschriebenen Werkzeug, das beim Automatisieren von Aufgaben in Terminals hilft [2]. Dank Expect lassen sich Tunnel oder mehrere SSH-Verbindungen komfortabel aufbauen sowie Passworteingaben automatisieren.
Erste Schritte
Ubuntu-Anwender haben es leicht: Sie brauchen lediglich die /etc/apt/sources.list um das PAC-Repository [3] zu erweitern. Die entsprechende Zeile lautet:
deb http://archive.getdeb.net/ubuntu lucid-getdeb apps
Anschließend installieren die beiden Aufrufe apt-get update und apt-get install pac das Werkzeug mitsamt allen Abhängigkeiten. Nutzer anderer Distributionen haben einen ungleich steinigeren Pfad vor sich, denn sie müssen auf die Quelltexte zurückgreifen und die Abhängigkeiten händisch auflösen, was in eine zeitraubende Beschäftigungstherapie ausarten kann.
Erfolgreich installiert, findet sich ein Eintrag für PAC im Menü, alternativ lässt sich die Anwendung mittels des Aufrufs pac von der Kommandozeile starten. Übergeben Sie dem Befehl dabei gleich noch ein -start_tray, verkrümelt sich PAC in das Desktop-Panel.
Der Perl Auto Connector präsentiert sich mit einer aufgeräumten Oberfläche, die sich intuitiv bedienen lässt. Das ist auch gut so, denn außer einer rudimentären Manpage existiert keine Hilfe für die Anwendung. Bevor PAC zu irgendeinem Rechner Verbindungen herstellt, müssen Sie eine Gruppe für eine sogenannte Umgebung anlegen. Bei einer solchen Umgebung kann es sich um das heimische Netzwerk, die eigene Serverfarm oder die Rechner im Betrieb handeln.
Sobald eine Gruppe existiert, können Sie ihr Rechner zuordnen. Neben IP-Adresse, Nutzername und Passwort möchte PAC auch wissen, ob er die Verbindung zu Gegenstelle via SSH, FTP oder Telnet aufbauen soll und wie Sie den zugehörigen Tab benennen wollen (Abbildung 1). Haben Sie die Angaben gemacht und gespeichert, steht einer Verbindungsaufnahme nichts mehr im Weg. Nach einem Klick auf Verbinden öffnet sich ein Terminalfenster, in dem der Prompt des entfernten PCs auf Eingaben wartet.
Bis hierhin bietet PAC noch nichts Besonderes. Eine Option, die das Admin-Leben erleichtert, ist jedoch die Möglichkeit, für jeden Server spezielle Anpassungen vorzunehmen. So können Sie beispielsweise Befehle definieren, die vor und nach der Verbindung auf dem Rechner ausgeführt werden, auf dem PAC läuft. Es lassen sich aber auch eine Reihe Befehle für die entfernte Maschine speichern, die Sie dann per Mausklick ausführen (Abbildung 2). Daneben besteht auch die Möglichkeit, alle Ausgaben des Terminals nach bestimmten Begriffen zu durchsuchen (Abbildung 3) oder gleichartige Server zu Clustern zusammenzufassen und vordefinierte Kommandos auf allen zum Cluster gehörigen Rechnern gleichzeitig aufzurufen (Abbildung 4).
Expect
Mit Expect verfügt PAC über ein Feature, das es erlaubt, auf bestimmte Ausgaben der entfernten Rechner zu reagieren und automatisch eine Reihe vordefinierter Befehle abzusetzen. In unserem Beispielnetzwerk befindet sich ein Ubuntu-Server, der über Updatemöglichkeiten informiert, sobald sich jemand anmeldet. Wir wollen PAC so konfigurieren, dass er das entfernte System aktualisiert, sobald Updates vorliegen.
Die entsprechende Meldung des Servers lautet X packages can be updated.. Sobald X größer 0 ist, soll Expect dafür sorgen, dass der entfernte Rechner die Paketlisten aktualisiert (apt-get update) und hinterher neuere Pakete einspielt (apt-get upgrade). Expect nutzt reguläre Ausdrücke, die es mit den Terminalausgaben abgleicht. Der reguläre Ausdruck, der die Ausgabe beschreibt, ob neue Pakete vorhanden sind, lautet:
^[123456789][0123456789]*\ packages\ can\ be\ updated\.
Das bedeutet: Sobald der Server eine Zeile ausgibt, an deren Beginn eine oder mehrere Ziffern (ohne führende Null) stehen, gefolgt von packages can be updated., meldet Expect einen Treffer, der in der Konfiguration hinterlegte Befehl wird ausgeführt.
Da Ubuntu standardmäßig keinen Benutzer root kennt, gilt es Apt-get in Kombination mit Sudo aufzurufen. Folglich müssen Sie Expect anweisen, den String mit der Aufforderung zur Passworteingabe zu erwarten, um dann das Passwort abzusetzen. Sobald das System die Paketlisten aktualisiert hat, erscheint wieder der Kommandozeilen-Prompt – für Expect das Zeichen, jetzt den Upgrade-Befehl zu senden (Abbildung 5).
Hier gilt es die Reihenfolge peinlich genau zu beachten, da die Expect-Anweisungen sonst nicht abgearbeitet werden. In unserem Test fehlte ein erstes <command prompt> – ein Regex, den PAC bereits mitbringt und den Sie mittels Rechtsklick auf das Eingabefeld einfügen können. Das führte dazu, dass Expect sich zunächst weigerte, die regulären Ausdrücke mit den Serverausgaben abzugleichen.



