Open Source im professionellen Einsatz

Fortschritt mit Trick

Damit der Fortschrittsbalken auch einigermaßen die Wirklichkeit widerspiegelt, sammelt das CPAN-Modul File::Finder ab Zeile 22 alle Dateien (type »f«) unter dem Verzeichnis »$src_dir« und allen Unterverzeichnissen ein und ermittelt ihre Anzahl mit dem »scalar«-Operator. Während der »tar«-Prozess im Verbose-Modus abläuft, schnappt sich die »while«-Schleife ab Zeile 64 jeweils neu ausgegebene Zeilen und ist damit bestens darüber informiert, wie viele Dateien »tar« bereits bearbeitet hat.

Das Verhältnis von bereits erledigten Dateien zur Gesamtzahl meldet Zeile 70 an den Progressbalken, Zeile 68 schreibt den entsprechenden Text »Backup Progress (XX/YY)« dazu. Das »Gtk2«-Konstrukt mit der Methode »main_iteration« in Zeile 72 frischt die Oberfläche bei jedem Balkenruckler auf.

Nach Abschluss des »tar«-Kommandos schreibt Zeile 80 eine Erfolgsmeldung in den Button unterhalb des Balkens (Abbildung 7) und ein Mausklick darauf (oder die [Enter]-Taste) bricht das Programm ab. Damit die von »tar« geschriebenen Daten auch auf dem USB-Stick landen und das Betriebssystem sie nicht etwa nur zwischenspeichert, empfiehlt sich vor dem Entfernen des USB-Sticks ein »umount«, entweder von der Kommandozeile oder aus dem Dateimanager.

Abbildung 7: Das Backup lief erfolgreich und der Tarball liegt auf dem USB-Stick. Der vormalige »Cancel«-Button meldet jetzt Erfolg.

Abbildung 7: Das Backup lief erfolgreich und der Tarball liegt auf dem USB-Stick. Der vormalige »Cancel«-Button meldet jetzt Erfolg.

Nach dem Eintritt in die Haupteventschleife mit »Gtk2->main« in Zeile 54 nimmt das GUI seinen Lauf und wartet auf User-Eingaben. Da das Backup-Programm aber selbstständig zu laufen beginnen soll - sobald die Oberfläche steht und ohne dass ein Mausklick des Users dies einleitet -, setzt Zeile 50 einen Timer. Dieser ruft die ab Zeile 57 definierte Funktion »start()« als Task mit der niedrigsten Priorität Glib::G_PRIORITY_LOW auf, die der Glib-Kern erst dann startet, wenn keine GUI-Aufbau-Tasks mehr anliegen. Als einzigen Parameter übergibt der Timer »start()« das Widget des Progressbalkens »$pbar«. Wichtig ist dann noch, dass »start()« nach getaner Arbeit den Wert »Glib::SOURCE_REMOVE« zurückliefert, sonst ruft der Timer den Callback nach dem Timeout erneut auf und der Backup begänne von vorne.

Installieren

Das Paket »dbus« enthalten alle gängigen Linux-Distributionen. Die benötigten Perl-Module liegen als »libdatetime-perl«, »libfile-finder-perl«, »libgtk2-perl«, »libglib -perl«, »libapp-daemon-perl«, »liblog-log4perl-perl« und »libnet-dbus-perl« in den Ubuntu-Repositories vor.

Der Befehl »dbus-mount-watcher start« fährt anschließend den Daemon hoch. Wer möchte, dass dies bei einem Reboot des Rechners automatisch geschieht, sollte den Daemon unter »/etc/init.d/« einhängen und mit »update-rc.d« registrieren. Das grafische Backup-Skript sollte im selben Verzeichnis wie der Daemon landen oder sich über eine absolute Pfadangabe aufrufen lassen.

Die Möglichkeiten mit D-Bus gehen noch weit über die hier vorgestellten Tricks hinaus. Applikationen wie der Instant-Messenger-Client Pidgin oder der Musikspieler Rhythmbox sind eng mit D-Bus integriert und lassen sich damit regelrecht fernsteuern [4]. (jcb)

Infos

[1] Listings zu diesem Artikel: [ftp://www.linux-magazin.de/pub/listings/magazin/2011/04/Perl]

[2] "Introduction To DBus", Sprach-agnostische Einführung in D-Bus: [http://www.freedesktop.org/wiki/IntroductionToDBus]

[3] Emmanuel Rodriquez, "D-Bus with Perl": [http://bratislava.pm.org/presentation/dbus/]

[4] Pidgin-Integration mit D-Bus: [http://developer.pidgin.im/wiki/DbusHowto]

Der Autor


Michael Schilli arbeitet als Software-Engineer bei Yahoo in Sunnyvale, Kalifornien. Er hat die Bücher "Goto Perl 5" (auf Deutsch) und "Perl Power" (auf Englisch) für Addison-Wesley geschrieben und ist unter [mschilli@perlmeister.com] zu erreichen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook