26.02.2014 Aufrufe

LinuxUser Optimale Skripte (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Giada: Drum-Sequencer<br />

ohne große Schnörkel S. 44<br />

Safesquid: Kommerzieller Proxy<br />

mit löchrigen Filterregeln S. 68<br />

Retext: Markdown-Editor<br />

mit WYSIWYG-Funktion S. 54<br />

03.2014<br />

Audioplayer • Giada • Inkscape • Retext • Safesquid • Skripting<br />

03<br />

Komfortable Abfragen, standardisierte Routinen, portabler Shell-Code<br />

OPTIMAle <strong>Skripte</strong><br />

Mit Styleguides Fehler vermeiden<br />

und leicht wiederverwendbaren<br />

Code programmieren S. 24<br />

Komfortable Abfragen für<br />

jeden Zweck nach dem<br />

Baukastenprinzip S. 30<br />

Allrounder Bash im Vergleich<br />

mit Microsofts Powershell,<br />

portable <strong>Skripte</strong> mit dem Shell Compiler S. 20, 40<br />

Komplette Linux-Welt in Windows einbetten S. 80<br />

Dank Cygwin integrieren Sie die bewährten Tools nahtlos ins Microsoft-System<br />

Schlanke Musikboxen S.48<br />

CLI-Audioplayer für jeden Geschmack<br />

Cloud-Client Insync Plus<br />

Kommerzieller Sync-Client<br />

für Googles Drive-Dienst S. 64<br />

www.linux-user.de<br />

Perfekter Pinselschwung S.58<br />

Inkscapes Malwerkzeuge gekonnt nutzen<br />

Modularer Server Eisfair-NG<br />

Pfiffige Zentrale fürs LAN<br />

unkompliziert aufsetzen S. 86<br />

Mindmaps mit Labyrinth<br />

Ruckzuck zum Bauplan<br />

fürs Gedankengebäude S. 76<br />

EUR 5,95 EUR 6,70 sfr 11,90 EUR 7,00 EUR 7,95 EUR 7,95<br />

Deutschland Österreich Schweiz Benelux Spanien Italien 4 195111 005504 03


Editorial<br />

Klopf, klopf!<br />

Sehr geehrte Leserinnen und Leser,<br />

in den kommenden Wochen und Monaten<br />

bietet sich uns Linux-Anwendern<br />

eine einmalige Gelegenheit, 2014 zu einem<br />

zumindest kleinen „Jahr des Linux-<br />

Desktops“ zu machen. Am 8. April stellt<br />

Microsoft bekanntlich den Support für<br />

Windows XP ein, ab diesem Datum gibt<br />

es also für das nach wie vor weit verbreitete<br />

System keinerlei Updates und Security-Fixes<br />

mehr. Lediglich der Anti-Viren-<br />

Wächter Microsoft Security Essentials<br />

(MSSE) soll noch bis Mitte Juli 2015 mit<br />

Signaturen versorgt werden, dann ist<br />

endgültig Schicht im Schacht û. Nicht,<br />

dass das den Anwendern viel hülfe, denn<br />

MSSE lässt fast so viele Schädlinge durch,<br />

wie es erkennt û.<br />

Das könnte interessante Auswirkungen<br />

haben, auch an ganz unerwarteten<br />

Stellen. Noch läuft etwa auf Dreiviertel<br />

der Rechner der Bundestagsabgeordneten<br />

Windows XP û, in der Verwaltung<br />

des Landes Berlin gibt es – Stand Februar<br />

2014 – nicht weniger als 48 000 XP-<br />

PCs û. Auch nett: 95 Prozent aller Geldautomaten<br />

weltweit verwenden nach<br />

wie vor das antiquierte Microsoft-OS als<br />

Betriebssystembasis û.<br />

Dem Bundestag, dem Land Berlin oder<br />

den Banken bei einer Migration auf eine<br />

vernünftige Betriebssystem-Alternative<br />

unter die Arme zu greifen, ist freilich aussichtslos.<br />

Wohl aber bietet sich gerade<br />

jetzt eine ideale Gelegenheit, in der Familie,<br />

der Nachbarschaft und im Freundeskreis<br />

mal ein wenig in Sachen Windows<br />

XP auf den Busch zu klopfen – und<br />

gegebenenfalls Linux als geeignete Ablösung<br />

vorzuschlagen.<br />

Dabei können Sie argumentativ gleich<br />

in zweifacher Hinsicht punkten: Zum einen<br />

damit, dass sich typische Distributionen<br />

in Sachen Hardware wesentlich genügsamer<br />

geben als das ansonsten ins<br />

Auge zu fassende Windows 8, zum anderen<br />

mit der immanent höheren Widerstandsfähigkeit<br />

des freien Betriebssystems<br />

gegenüber Softwareschädlingen<br />

aller Art. Dass es Linux zudem gratis gibt,<br />

dürfte die potenziellen Neubenutzer<br />

ebenfalls nicht gerade abschrecken.<br />

Auf den Datenträgern zu dieser LU-<br />

Ausgabe finden Sie als Demonstrationsmaterial<br />

einige ausgewählte Distributionen,<br />

welche die ganze Bandbreite der<br />

Möglichkeiten bei einer Migration von<br />

XP zu Linux abdecken. Das reicht vom<br />

Jörg Luther<br />

Chefredakteur<br />

umfassend ausgestatteten Rolling-Release-Debian<br />

Siduction bis hin zu Linux<br />

Lite, das selbst auf der schwachbrüstigsten<br />

Rechner-Krücke noch Beachtliches<br />

zustande bringt.<br />

Lassen Sie doch die Noch-Windows-<br />

XP-Nutzer rund um Sie mal einen Blick<br />

auf die Möglichkeiten werfen, die ein<br />

Umstieg auf Linux mit sich bringt – oder<br />

kopieren Sie den mit Windows geschlagenen<br />

Nachbarn, Freunden und Bekannten<br />

am besten gleich eine der Distributionen<br />

auf einen USB-Stick. Es wäre doch<br />

gelacht, wenn sich unter so günstigen<br />

Umständen wie derzeit die Verbreitung<br />

unseres Lieblingsbetriebssystems nicht<br />

etwas ausbauen ließe, oder?<br />

Mit herzlichen Grüßen,<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/31834<br />

03.2014 www.linux-user.de<br />

3


03<br />

Das Vektorzeichenprogramm Inkscape<br />

bringt Profi-Funktionen<br />

58<br />

mit, die sich dem Gelegenheitsnutzer<br />

nicht auf den ersten Blick erschließen. Unser<br />

Workshop zeigt, welche gut versteckten<br />

Schalter für einen Aha-Effekt sorgen.<br />

Mit einem Proxy filtern Sie unerwünschte<br />

Inhalte aus dem Daten-<br />

68<br />

verkehr, der ins lokale Netz strömt. Das versprechen<br />

auch die Hersteller von Safe squid,<br />

einem kommerziellen Proxy-Server. Unser<br />

Test deckte aber einige Schwächen auf.<br />

Wer sich einem Thema gedanklich<br />

76 nähert, dem hilft eine Mindmap<br />

beim Ordnen der Assoziationen. Mit Labyrinth<br />

kartografieren Sie Ihre Gedankenwelt.<br />

Heft-DVD<br />

Siduction 2013.2.1 .............. 6<br />

Während Entwickler anderer Distributionen<br />

noch erbittert debattieren, macht Siduction<br />

Nägel mit Köpfen: Das aktuelle Release hat<br />

das neue Init-System Systemd an Bord.<br />

ExTiX 14 . . . . . . . . . . . . . . . . . . . . . 10<br />

Der Schweden-Import ExTiX 14 startet nicht<br />

nur von Platte und DVD, sondern problemlos<br />

von einem USB-Stick. Anschließend gewährt<br />

ExTiX den Zugriff auf populäre Social Networks<br />

und zahlreiche Online-Dienste.<br />

Parrot Security OS ............. 14<br />

Mit dem sicherheitsorientierten Parrot<br />

Security OS werden Sie lästige digitale<br />

Quälgeister schnell los und schotten Ihr Netz<br />

optimal gegen unerwünschte Zugriffe ab.<br />

Schwerpunkt<br />

Powershell vs. Bash . . . . . . . . . . 20<br />

Bash und Powershell aus der Microsoft-Welt<br />

sind im Grunde Verwandte. Aber wie in jeder<br />

großen Familie weisen die einzelnen Zweige<br />

des Stammbaums sehr unterschiedliche<br />

Formen auf. Ein Vergleich zeigt, wo sich die<br />

gut abgehangene Bash unter Linux vom<br />

Admin-Helfer unter Windows unterscheidet<br />

und was ähnlich funktioniert.<br />

Guter Skript-Stil ............... 24<br />

Styleguides helfen mit ihren Richtlinien,<br />

Bash-<strong>Skripte</strong> zu strukturieren sowie übersichtlicher<br />

zu gestalten. Wer sich einmal auf<br />

einen Stil beim Programmieren einlässt,<br />

vermeidet Fehler und sorgt auf lange Sicht<br />

für gut wiederverwendbaren Code.<br />

Schwerpunkt<br />

CLI-Dialoge ................... 30<br />

Dank Dialog erweitern Sie mit nur einer Zeile<br />

Shellcode ein Skript um komfortable Eingabemasken.<br />

Diese erweisen sich in vielen<br />

Fällen als gelungener Kompromiss zwischen<br />

Funktionalität und Programmieraufwand.<br />

Auf diese Weise bewältigen Sie schnell selbst<br />

komplexe Aufgaben beim <strong>Skripte</strong>n.<br />

SHC .........................40<br />

Der Shell Script Compiler wandelt <strong>Skripte</strong> in<br />

Binärprogramme um. Das schützt vor unbeabsichtigten<br />

Veränderungen und hilft der<br />

Portabilität auf die Sprünge. Allerdings birgt<br />

die Technik auch einige fiese Tücken.<br />

Aktuelles<br />

Angetestet . . . . . . . . . . . . . . . . . . . 18<br />

Beobachter 1.7.8 überwacht Protokoll-Files,<br />

portabler GW-Basic-Clon PC-Basic 14.01,<br />

Procenv 0.28 behält Umgebungsvariablen<br />

im Blick, Rpmerizor 2.7 baut unkompliziert<br />

RPM-Pakete zusammen<br />

6Während die Debian-Community noch streitet<br />

und die Ubuntu-Developer krampfhaft am eigenen<br />

Ansatz Upstart festhalten, machen die Entwickler<br />

bei Siduction nun Nägel mit Köpfen: Sie integrieren<br />

als eine der ersten Distributionen das<br />

neue Init-System Systemd als Standard.<br />

4 03.2014


Windows an sich nimmt sich für<br />

80 einen eingefleischten Linux-Anwender<br />

sehr spartanisch aus. Mit Cygwin<br />

holen Sie sich die gewohnten Tools an<br />

Bord, angefangen von der Shell bis hin<br />

zum Desktop im Parallelbetrieb.<br />

Daten vom Anwender abfragen<br />

30 ist in einem Shell-Skript eigentlich<br />

kein Problem. Etwas mehr Komfort gönnen<br />

Sie dem Benutzer mit Dialog. Dazu<br />

genügt oft schon eine zusätzliche Zeile.<br />

Mit dem Shell Compiler wandeln<br />

40 Sie ein schlichtes Bash-Skript in<br />

Binärcode um. So verhindern Sie ungewollte<br />

Änderungen und sorgen für Portabilität.<br />

Praxis<br />

Giada . . . . . . . . . . . . . . . . . . . . . . . 44<br />

Loops und Effekte gehören zum Handwerkszeug<br />

des modernen DJs. Diese Kunst<br />

beherrscht Giada perfekt.<br />

Audioplayer für die Konsole . . . . 48<br />

Sie geben sich schlank, schnell und effizient:<br />

Audioplayer für die Konsole ebnen den<br />

direkten Weg zum Hörerlebnis.<br />

Retext . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Einmal schreiben, in drei Formate exportieren<br />

– was der Editor Retext in der Theorie<br />

verspricht, klappt in der Praxis nur bedingt.<br />

Inkscape-Effekte (2) . . . . . . . . . . . 58<br />

Das Vektorzeichenprogramm Inkscape imitiert<br />

bei Bedarf auch die eleganten Pinselschwünge<br />

eines Ölgemäldes.<br />

Im Test<br />

Insync Plus ...................64<br />

Zur echten Cloud-Anwendung fehlt Google<br />

Drive ein Desktop-Client für die automatische<br />

Synchronisation. Die Firma Insync<br />

schließt nun diese Lücke.<br />

Safesquid ....................68<br />

Das kommerzielle, aber für Privatanweder<br />

kostenlose Tool Safesquid verspricht den<br />

Datenverkehr zu filtern. Im Test zeigt das<br />

Programm jedoch kleine Schwächen.<br />

UBUNTU<br />

user<br />

Labyrinth . . . . . . . . . . . . . . . . . . . . 76<br />

Mit Labyrinth erstellen Sie Mindmaps, um<br />

Ihre Gedanken und Ideen zu sammeln und<br />

zu Papier zu bringen.<br />

Netz&System<br />

Cygwin . . . . . . . . . . . . . . . . . . . . . . 80<br />

Mit der Cygwin-Umgebung laufen unter<br />

Windows mehr Linux-Anwendungen als<br />

anders herum unter Wine. Auch das Ausführen<br />

gra fi scher Programme eines Linux-Rechners<br />

über das Netz unter Windows gelingt<br />

dank Cygwin mit minimalem Aufwand.<br />

Eisfair-NG ....................86<br />

Mit der modular aufgebauten Server-<br />

Distribution Eisfair-NG konfigurieren und<br />

verwalten auch unerfahrene Anwender ohne<br />

Schwierigkeiten verschiedenste Systeme<br />

und nützliche zentrale Dienste.<br />

Jetzt wird's Old School:<br />

48In Zeiten von UPNP, WLAN<br />

und smarten Playern nehmen sich<br />

Audioplayer für die Konsole antik<br />

aus. Wer es jedoch unkompliziert<br />

mag, kommt um die kleinen Tools<br />

fürs Terminal nicht herum.<br />

Service<br />

Editorial . . . . . . . . . . . . . . . . . . . . . . 3<br />

IT-Profimarkt . . . . . . . . . . . . . . . . . 90<br />

Impressum ...................94<br />

Events/Autoren/Inserenten .....95<br />

<strong>Vorschau</strong> .....................96<br />

Heft-DVD-Inhalt ............... 97<br />

03.2014 www.linux-user.de<br />

5


Heft-DVD<br />

Siduction 2013.2.1<br />

Siduction: Debian „Sid“ und mehr<br />

Volldampf voraus<br />

Warum noch länger warten? Das Siduction-Projekt wagt bereits jetzt einen Schritt,<br />

über den die Entwickler anderer Distributionen noch erbittert debattieren: Es integriert<br />

in seinem aktuellsten Release das neue Init-System Systemd. Ferdinand Thommes<br />

Readme<br />

Siduction 2013.2 „December“ basiert auf<br />

einem Schnappschuss des Debian-„Sid“-<br />

Repositories vom 30. Dezember 2013.<br />

Hinzu kommen ein eigener Kernel 3.12-6<br />

sowie verschiedene weitere Anpassungen.<br />

Das Siduction-Team legt ansonsten bei<br />

seiner Rolling-Release-Distribution größten<br />

Wert auf weitgehende Nähe zu Debian<br />

sowie einen sauberen Upgrade-Pfad.<br />

Mit dem Silvester 2013 veröffentlichten<br />

Siduction 2013.2 hat das Siduction-Projekt<br />

û das zweite Release im Jahr 2013<br />

hingelegt. Die Version mit dem Codenamen<br />

„December“ gibt es in den Varianten<br />

KDE, Gnome, LXDE, Razor-Qt und<br />

XFCE. Daneben existieren die Flavours<br />

Xorg mit X-Server und Fluxbox sowie<br />

NoX ohne grafische Oberfläche.<br />

Auf den Installationsmedien findet<br />

sich noch KDE 4.11.4, mittlerweile liegt<br />

aber bereits KDE 4.12 in den Siduction-<br />

Repos – die letzte KDE-Version vor dem<br />

Umstieg auf KDE 5. Gnome hängt mit<br />

Version 3.8.4 etwas zurück, XFCE kommt<br />

in der aktuellen Version 4.10.1 auf den<br />

Rechner. LXDE und Razor-Qt erscheinen<br />

vermutlich letztmalig als einzelne Desktop-Umgebungen:<br />

Die beiden Projekte<br />

verschmelzen gerade und wollen einen<br />

leichtgewichtigen Desktop auf der Basis<br />

des Qt-Frameworks entwickeln.<br />

Die wichtigste Neuerung von Siduction<br />

2013.02 stellt zweifelsohne die Im-<br />

6 www.linux-user.de<br />

03.2014


Siduction 2013.2.1<br />

Heft-DVD<br />

plementation von Systemd û in Version<br />

204-6 dar. Während Debian noch<br />

beratschlagt, welches Init-System man<br />

in Debian 8 ausliefern soll, hat Siduction<br />

sich bereits auf Systemd als Ersatz für<br />

SysV-Init festgelegt. Laut den Release<br />

Notes û erscheint Systemd den Entwicklern<br />

technisch am weitesten fortgeschritten:<br />

Es bietet neben einem schnellen<br />

Boot-Vorgang durch paralleles Abarbeiten<br />

der Startskripte auch den Vorteil<br />

eines im Vergleich zu Syslog besseren<br />

Protokollsystems, das bereits früher im<br />

Boot-Prozess einsetzt und umfassendere<br />

Informationen liefert als der Vorgänger.<br />

Installation<br />

Zur Installation gilt es, ein passendes<br />

Medium zu erstellen (zumindest, falls<br />

Ihnen nicht die DVD-Edition dieses Hefts<br />

vorliegt: In diesem Fall booten Sie Siduction<br />

von der zweiten Heft-DVD). Neben<br />

einem optischen Datenträger eignet sich<br />

dazu am besten ein USB-Stick mit mindestens<br />

2 GByte Kapazität. Einen USB-<br />

Stick mit dem ISO-Image erstellen Sie<br />

mithilfe des Tools Dd û:<br />

Die korrekte Device-Nummer X finden<br />

Sie (mit administrativen Rechten) über<br />

den Befehl fdisk ‐l heraus. Dd selbst<br />

benötigt zur Ausführung keine Root-<br />

Rechte, überschreibt aber ohne Nachfrage<br />

und unwiderruflich alle Daten auf<br />

dem USB-Stick. Stellen Sie deshalb unbedingt<br />

sicher, das korrekte Device anzugeben.<br />

Der Befehl lautet dann:<br />

$ dd if=/Pfad/zum/Image of=/dev/sdX<br />

Wenige Minuten nach dem Start von Dd<br />

liegt auf dem Stick das Abbild vor und<br />

wartet auf den ersten Start.<br />

Beim Hochfahren des Live-Mediums<br />

treffen Sie am besten gleich einige Einstellungen,<br />

die hinterher viel Zeit ersparen.<br />

Dazu stellen Sie beim Booten mit<br />

[F2] die gewünschte Sprache ein und<br />

mit [F3] die korrekte Zeitzone. Besitzt<br />

der Rechner eine Grafikkarte von AMD,<br />

so sollten Sie die zweite Option mit dem<br />

Zusatz Save GFX Settings verwenden.<br />

Nach dem Hochfahren und der Anmeldung<br />

als Standard-Anwender siducer<br />

mit dem Passwort live begrüßt Sie ein<br />

aufgeräumter Desktop mit lediglich drei<br />

Siduction 2013.2.1<br />

Gnome, KDE, LXDE, Razor-qt, XFCE<br />

(32 und 64 Bit) bootfähig<br />

auf Heft-DVD 2<br />

Wie stabil ist Unstable?<br />

Die Distribution Siduction basiert auf Debians Unstable-Zweig, der<br />

synonym für stets aktuelle Software steht. Dabei führt der Begriff<br />

Unstable leicht in die Irre: Er meint hier nicht so sehr „instabil“,<br />

sondern vielmehr „ständig im Wandel“.<br />

Das bedeutet im Klartext, dass Debian û viermal pro Tag die Repositories<br />

aktualisiert. Da „Sid“, wie man den Unstable-Zweig auch<br />

nennt, als Rolling Release û ausgelegt ist, können Anwender bei<br />

Bedarf mehrmals täglich ihr System aktualisieren. Das bügelt eingeschleppte<br />

Fehler in einem Paket meist schnell aus. Dem Unstable-<br />

Zweig hängt bis heute der Ruf nach, er sei wegen häufiger Fehler<br />

schwer zu administrieren. Das stimmt mittlerweile nicht mehr.<br />

Ursprünglich war Unstable im Gegensatz zum Zweig Experimental<br />

zwar ein vollständiges Archiv, das aber hauptsächlich Entwickler<br />

nutzten, um neue Paket-Versionen zu testen. Dabei gerieten häufig<br />

kaputte Pakete in den Umlauf.<br />

Mit der Zeit verwendeten aber immer mehr Endanwender, denen<br />

Debians Stable-Variante softwareseitig zu altbacken war, stattdessen<br />

Unstable. In der Folge achteten die Entwickler zunehmend darauf,<br />

fehlerfreie Pakete hochzuladen und das Repository wurde mit der<br />

Zeit immer stabiler. Heute lässt es sich – mit einigem Grundwissen<br />

und dem Support der Distribution im Rücken – durchaus gut auf<br />

dem Rechner als Desktop-System einsetzen.<br />

Systemd-Befehle<br />

Siduction setzt auf das neue Init-System Systemd, dessen Befehlssatz<br />

sich vom bisher Gewohnten unterscheidet. Um beispielsweise Befehle<br />

an einen Dienst abzusetzen, lautet das Schema:<br />

$ systemctl Operation Dienste‐Name<br />

Dabei gibt es fünf grundlegende Operationen: start und stop starten<br />

beziehungsweise beenden den Dienst manuell. Dagegen sorgt<br />

enable für ein automatisches Anlaufen des Diensts beim Hochfahren,<br />

disable verhindert ebendas. Einen Status-Report sowie eventuelle<br />

Fehlermeldungen fördert status zutage.<br />

Als sehr nützlich erweist sich auch der Befehl journalctl: Ohne<br />

Parameterangabe zeigt er das komplette Journal, in der Form journalctl<br />

‐b lediglich den letzten Boot-Vorgang. Weitere Informationen<br />

zu Systemd findet man im Systemd-Wiki û.<br />

03.2014 www.linux-user.de<br />

7


Heft-DVD<br />

Siduction 2013.2.1<br />

Icons. Ein Mausklick auf das oberste<br />

davon, IRC, führt Sie in den IRC-Kanal<br />

#siduction‐de. Dort können Sie bereits<br />

vor der Installation anstehende Fragen<br />

im direkten Kontakt zum Projekt klären<br />

oder einen Schnack mit den Entwicklern<br />

halten.<br />

Installation im Browser<br />

1 Bei den Dateisystemen lässt Ihnen Siduction (hier der webbasierte Installer)<br />

die Wahl zwischen Ext3/​4, ReiserFS, XFS sowie Btrfs.<br />

Bei einem Klick auf das Installer-Icon auf<br />

dem Desktop versucht Siduction seinen<br />

webbasierten Installer im Browser zu<br />

starten. Steht zu diesem Zeitpunkt noch<br />

keine Internetverbindung (was die absolute<br />

Ausnahme sein dürfte), schlägt diese<br />

Methode freilich fehl. Deshalb gibt es<br />

zusätzlich den Ncurses-basierten CLI-Installer<br />

û. Sie starten ihn auf einer Konsole<br />

mittels des Kommandos cli‐installer,<br />

seine Optionen gibt er durch ein angehängtes<br />

‐h beim Aufruf preis.<br />

Der webbasierte grafische Installer leitet<br />

Sie über mehrere Tableaus durch die<br />

Installation. Es empfiehlt sich, zumindest<br />

eine Root- und eine Home-Partition anzulegen.<br />

Ob Sie eine Swap-Partition nutzen<br />

sollten, hängt stark von der RAM-<br />

Ausstattung des Rechners ab. Bei PCs<br />

mit 8 oder mehr GByte Hauptspeicher<br />

lässt sich gut darauf verzichten.<br />

Die zugewiesene Root-Partition erstellt<br />

und formatiert Siduction während<br />

des Vorgangs auf jeden Fall 1 ; eine vorhandene<br />

Home-Partition dürfen Sie je<br />

nach Gusto formatieren, einhängen oder<br />

erst nach der Installation ganz oder teilweise<br />

in das neue Home übernehmen.<br />

Weitere Partitionen lassen sich vorbelegen<br />

und bei Bedarf mit einem passenden<br />

Label versehen. Die ebenfalls angebotene<br />

automatische Partitionierung<br />

funktioniert nur, wenn der Installer leere<br />

Partitionen vorfindet. Generell bietet die<br />

manuelle Partitionierung ohnehin mehr<br />

Kontrolle über das Plattenlayout.<br />

Logical Volume Manager!<br />

Möchten Sie für die Installation den Logical<br />

Volume Manager LVM û verwenden,<br />

so starten Sie dazu aus dem grafischen<br />

Installer heraus in einem zweiten<br />

Tab das Sidu-Disk-Center. Ansonsten<br />

können Sie dort zwischen den Werkzeugen<br />

Gparted, Gdisk, Fdisk und Cfdisk<br />

wählen. Im weiteren Reiter geben Sie an,<br />

ob der Installer die unfreien Quellen von<br />

Debian einbinden soll. Mit diesen erhalten<br />

Sie Zugriff auf proprietäre Grafiktreiber,<br />

Firmware für WLAN-Hardware sowie<br />

Flash-Player und andere Tools, die aus lizenzrechtlichen<br />

Gründen weder Debian<br />

noch Siduction direkt anbieten.<br />

2 Bereits im Live-System besteht die Möglichkeit, mit dem Tool Fw-detect<br />

zu klären, ob das System für verbaute Komponenten Firmware benötigt.<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31817<br />

8 www.linux-user.de<br />

03.2014


Siduction 2013.2.1<br />

Heft-DVD<br />

Siduction versucht, benötigte Firmware<br />

bereits im Vorfeld zu erkennen und einzurichten.<br />

Diese Funktion stoßen Sie optional<br />

auch über den Befehl fw‐detect<br />

manuell an 2 . Ebenso können Sie benötigte<br />

Treiber und Firmware-Komponenten<br />

bereits vor der Installation im<br />

Live-System einspielt: Siduction übernimmt<br />

diese bei der Installation direkt.<br />

Besonders für eine einwandfreie Grafikdarstellung<br />

bei AMD-GPUs ist es oft hilfreich,<br />

das Paket firmware-linux-nonfree<br />

vor der Installation bereitzustellen.<br />

Nach Angabe aller notwendigen Informationen<br />

starten Sie im letzten Reiter<br />

des Installers die eigentliche Systemeinrichtung.<br />

Auf aktueller Hardware steht<br />

das komplette System innerhalb von unter<br />

einer Minute bereit, selbst auf älteren<br />

PCs sollte die Installation nicht länger als<br />

10 Minuten brauchen. Ein Neustart nach<br />

Entfernen des Installationsmediums<br />

bootet in das frisch aufgesetzte System.<br />

Hier werden Sie geholfen!<br />

Bei Bedarf nehmen Sie bereits vor der Installation<br />

über ein Icon auf dem Desktop<br />

Kontakt zu Entwicklern und Unterstützern<br />

im IRC auf. Auch während der Installation<br />

können Sie dort Hilfestellung<br />

erhalten. Darüber hinaus bietet Siduction<br />

ein gut besuchtes Forum, ein Blog,<br />

ein Wiki û, eine Entwicklerplattform û<br />

sowie ein ausführliches Handbuch û in<br />

mehreren Sprachen an 3 . Letzteres hält<br />

Kleine Siduction-Historie<br />

Siduction geht in seiner Entwicklungsgeschichte<br />

bis auf das Knoppix-Forum im Jahr<br />

2003 zurück. Zu diesem Zeitpunkt begann<br />

sich Kanotix zu entwickeln, um Knoppix<br />

nicht nur als Live-CD, sondern auch installierbar<br />

zu gestalten. Daraus wiederum entstanden<br />

Sidux und das heute noch aktive<br />

Aptosid, von dem sich wegen Unstimmigkeiten<br />

über den Fortgang des Projekts 2011<br />

Siduction abspaltete.<br />

Einige der Siduction-Entwickler sowie treue<br />

ambitioniertere Anwender sind seit den<br />

Anfängen 2003 dabei, Debian Unstable als<br />

benutzbare Plattform mit stets aktueller<br />

3 Wer auf der Suche nach Informationen ist, schaut ins ausführliche Siduction-<br />

Handbuch. Das hält viele gute Tipps und Kniffe vor allem für Einsteiger bereit.<br />

viele gute Tipps und Kniffe vor allem für<br />

Einsteiger bereit, welche den Alltag mit<br />

einer Debian-Unstable-Distribution<br />

enorm erleichtern. Das Forum bietet zudem<br />

mit der Rubrik Upgrade Warnings<br />

û einen Anlaufpunkt, um vor einer<br />

Aktualisierung des Systems per Distupgrade<br />

nachzusehen, ob gerade defekte<br />

Pakete im Umlauf sind.<br />

Einordnung und Fazit<br />

Siduction bedient sich als Rolling-Release-Distribution<br />

hauptsächlich in Debians<br />

„Sid“-Repositories, ist aber in einigen<br />

Bereichen „Sid“ voraus. Die Macher<br />

freuen sich, wenn neue Anwender ein<br />

Software und einer superben Hardware-<br />

Erkennung zu gestalten, die auch neueste<br />

Errungenschaften der Technik ohne Klimmzüge<br />

unterstützt.<br />

Wo und wie passt nun Siduction ins Ökosystem<br />

der Linux-Distributionen? Der<br />

Debian-Ableger bleibt der Philosophie der<br />

Mutter treu, indem er nur freie Software<br />

nach den Debian Free Software Guidelines<br />

û ausliefert. Ansonsten gibt sich<br />

Siduction nicht ganz so aktuell wie Arch<br />

Linux û, dafür aber auch nicht so<br />

anspruchsvoll bei Installation und Administration.<br />

wenig Interesse mitbringen, zu verstehen,<br />

wie Linux funktioniert, und auch<br />

vor gelegentlichen Ausflügen auf die<br />

Kommandozeile nicht zurückschrecken.<br />

Sofern Sie den entsprechenden Enthusiasmus<br />

mitbringen, steht einer längerfristigen<br />

Freundschaft mit dem schnellen<br />

Debian-Ableger nichts im Weg.<br />

Ein wenig Kritik darf am Ende nicht<br />

fehlen: Der Installer funktioniert technisch<br />

gut, jedoch ließe sich die grafische<br />

Oberfläche noch etwas benutzerfreundlicher<br />

gestalten. Zumindest zwei der Reiter<br />

scheinen derzeit mit Funktionen<br />

überladen, hier sollten die Entwickler<br />

eine Entzerrung vornehmen. (jlu) n<br />

Der Autor<br />

Ferdinand Thommes lebt und arbeitet<br />

als Linux-Entwickler, freier Autor und Stadtführer<br />

in Berlin.<br />

03.2014 www.linux-user.de<br />

9


Heft-DVD<br />

ExTiX 14<br />

Allround-Talent ExTiX Linux aus Schweden<br />

Smörrelinux<br />

ExTiX 14 startet nicht nur von<br />

DVD, sondern problemlos<br />

auch von einem USB-Stick.<br />

Anschließend gewährt es<br />

auch ohne Festplatte den<br />

Zugriff auf populäre Social<br />

Networks und zahlreiche<br />

Online-Dienste. Erik Bärwaldt<br />

Readme<br />

Auch in Skandinavien entstehen inzwischen<br />

neue Linux-Distributionen, die es<br />

durchaus mit etablierten Größen der<br />

Szene aufnehmen können. Das aus<br />

Schweden stammende ExTiX Linux<br />

möchte dabei als Allrounder für aktuelle<br />

Hardware überzeugen. Daher liegt die<br />

auf Ubuntu basierende Distribution nur<br />

in einer 64-Bit-Variante vor.<br />

Nach dem Download und Brennen<br />

des lediglich rund 1,4 GByte großen ISO-<br />

Images û auf eine DVD bietet die Distribution<br />

im Startmenü neben den üblichen<br />

Optionen zur Installation auf einer<br />

Festplatte oder dem Live-Betrieb auch<br />

die Möglichkeit an, das System auf einen<br />

USB-Stick zu kopieren.<br />

Da die Hardware-Voraussetzungen<br />

eher moderat ausfallen, testeten wir das<br />

System zunächst auf einem älteren<br />

Desktop-PC mit einem der ersten erhältlichen<br />

64-Bit-Prozessoren, der noch auf<br />

dem Pentium 4 basiert. ExTiX bootete<br />

dabei erstaunlich schnell in einen Classic-Gnome-Desktop,<br />

wobei Sie beim<br />

Anmelden den Usernamen live mit dem<br />

Passwort live nutzen.<br />

Desktop<br />

Die Gnome-Oberfläche im klassischen<br />

Modus erscheint dabei sehr aufgeräumt:<br />

Außer einem einzigen Icon zum Start<br />

der Installation auf eine Festplatte<br />

herrscht auf dem Desktop Leere. Programme<br />

und Ordner befinden sich in<br />

der oberen Panelleiste in den Menüs<br />

Applications und Places.<br />

Ein Manko des Live-Betriebs stach sofort<br />

ins Auge: ExTiX versteht es in diesem<br />

Der Allrounder ExTiX 14 glänzt bei entsprechend<br />

leistungsfähiger Hardware durch<br />

Stabilität, Vielfalt bei der Software und die<br />

Möglichkeit des mobilen Einsatzes.<br />

Listing 1<br />

$ cp extix14‐64bit‐gnome‐310‐isoh‐persistent‐1410mb‐131223.iso<br />

/dev/USB‐Stick<br />

$ sync<br />

10 www.linux-user.de<br />

03.2014


ExTiX 14<br />

Heft-DVD<br />

ExTiX Linux 14<br />

bootfähig auf Heft-DVD<br />

1 Der Gnome-Desktop unter ExTiX reagiert im Live-Modus erfreulich flott.<br />

Modus nicht, mit Wechseldatenträgern<br />

umzugehen. Es erkennt angeschlossene<br />

USB-Sticks zwar korrekt und hängt sie<br />

auch ein, kann sie dann aber dennoch<br />

nicht ansprechen – das System generiert<br />

nur Fehlermeldungen.<br />

Sobald Sie sich jedoch als Administrator<br />

root mit dem Passwort root anmelden,<br />

arbeitet das System korrekt. Zudem<br />

kommen Sie als administrativer Benutzer<br />

auch in den Genuss des modifizierten<br />

Gnome-Desktops mit einer Starterleiste<br />

am linken Bildschirmrand 1 .<br />

Software<br />

Bereits im Live-Betrieb bietet die Distribution<br />

neben den typischen Gnome-Applikationen<br />

wie Rhythmbox, Totem, Brasero<br />

oder Transmission auch Standard-<br />

Programme wie LibreOffice, Firefox,<br />

Thunderbird, VLC und Gimp. Zusätzlich<br />

haben die Entwickler Verwaltungswerkzeuge<br />

wie Gparted und Gnome-Disks integriert,<br />

auch die Scan-Software Xsane<br />

ist ab Werk mit an Bord.<br />

Sofern Sie die Festplatteninstallation<br />

im Grub-Bootmanager ausgewählt und<br />

das System somit bereits stationär installiert<br />

haben, steht im Menü System Tools |<br />

Software & Updates eine stattliche Anzahl<br />

aktiver Repositories bereit, sodass<br />

kaum noch Anwendungswünsche offenbeiben.<br />

Über den Paketmanager Synap-<br />

tic ziehen Sie bei Bedarf aber zusätzlich<br />

noch weitere Applikationen nach.<br />

Online-Dienste<br />

Als Besonderheit fällt im Applikationsmenü<br />

der Eintrag Online-Accounts auf,<br />

mit dem Sie die Zugangsdaten für unterschiedliche<br />

Online-Dienste und Social<br />

Networks konfigurieren. Danach loggen<br />

Sie sich per Mausklick in die vorbereiteten<br />

Dienste ein, ohne jedes Mal Zugangsdaten<br />

einzugeben 2 .<br />

Mit dem Programm Documents ist außerdem<br />

ein Betrachter für Dateien mit<br />

an Bord, die in einer Cloud abgelegt<br />

sind. Durch die eingängige Oberfläche<br />

von Documents verwischen die Grenzen<br />

zwischen lokaler Dateiablage und Online-Speicher<br />

zusehends, denn das Programm<br />

nutzt unabhängig vom Speicherort<br />

die gleichen Optionen.<br />

Sticky<br />

Eine weitere Besonderheit von ExTiX 14<br />

stellt das sogenannte Hybrid-Image dar,<br />

das es erlaubt, statt einem optischen Datenträger<br />

einen USB-Stick als Startmedium<br />

zu nutzen. Dazu laden Sie zunächst<br />

unter einer beliebigen Distribution das<br />

ISO-Image von der Projektseite herunter.<br />

Anschließend machen Sie den Gerätenamen<br />

des USB-Sticks ausfindig, indem Sie<br />

nach dem Einstecken des Mediums als<br />

Administrator im Terminal entweder den<br />

2 In Online-Accounts<br />

hinterlegen<br />

Sie Ihre Zugangsdaten,<br />

um schnellen<br />

Zugriff auf Online-<br />

Dienste und Social<br />

Networks zu haben.<br />

03.2014 www.linux-user.de<br />

11


Heft-DVD<br />

ExTiX 14<br />

3 Das bootfähige ExTiX-Image nutzt normalerweise nicht den<br />

gesamten Speicherplatz eines USB-Sticks aus.<br />

4 Im persistenten Modus steht auf dem USB-Stick je nach dessen<br />

Größe noch reichlich zusätzlicher Speicherplatz bereit.<br />

Befehl dmesg oder tail ‐f /var/log/<br />

messages aufrufen. Meist heißt das<br />

Device /dev/sdb oder dev/sdc.<br />

Haben Sie den Namen gefunden, kopieren<br />

Sie das Image von ExTiX 14 auf<br />

den USB-Stick. Der Befehl aus der ersten<br />

Zeile von Listing 1 legt das System auf<br />

den Stick ab. Anschließend synchronisiert<br />

das Kommando aus der zweiten<br />

Zeile die gepufferten Daten.<br />

Beachten Sie, dass dabei sämtliche zuvor<br />

auf dem Stick gespeicherten Daten<br />

verlorengehen. Der über die benötigten<br />

Listing 2<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31996<br />

rund 1,5 GByte hinausgehende freie<br />

Speicher wird nicht formatiert, sondern<br />

bleibt als freier Speicher unpartitioniert<br />

3. Nach dem Kopieren lässt sich der<br />

USB-Stick direkt als Bootmedium nutzen.<br />

Persistenz<br />

Möchten Sie den vorhandenen Speicher<br />

auf dem USB-Stick zur Ablage von persönlichen<br />

Daten und von Einstellungen<br />

nutzen, richten Sie das System im sogenannten<br />

persistenten Modus ein. Dazu<br />

nutzen Sie unter einer beliebigen Distribution<br />

wieder das ExTiX-ISO-Image. Laden<br />

Sie zusätzlich von der Projektseite û<br />

das Skript herunter, das auf einem USB-<br />

Stick eine bootfähige Partition angelegt.<br />

Mithilfe eines weiteren Skripts û stellen<br />

Sie den auf dem Stick noch vorhandenen<br />

freien Platz für ExTiX bereit. Haben<br />

Sie beide <strong>Skripte</strong> auf der Festplatte<br />

abgespeichert, machen Sie diese im Terminal<br />

mittels des Befehls chmod 755<br />

Datei ausführbar. Anschließend legen<br />

Sie die Partition auf dem Speicherstick<br />

an (Listing 2, erste Zeile). Achten Sie darauf,<br />

den korrekten Gerätenamen des<br />

Laufwerkes zu verwenden.<br />

Nach erfolgreicher Installation, die je<br />

nach Schreibgeschwindigkeit des USB-<br />

$ ./extix‐create‐usb‐drive.sh<br />

extix14‐64bit‐gnome‐310‐isoh‐persistent‐131223.iso /dev/USB‐Stick<br />

$ ./extix‐create‐usb‐drive‐persistent.sh<br />

extix14‐64bit‐gnome‐310‐isoh‐persistent‐131223.iso /dev/USB‐Stick<br />

Sticks etwas mehr oder weniger Zeit beansprucht,<br />

befindet sich ein vorkonfiguriertes<br />

ExTiX 14 in einer etwa 1,5 GByte<br />

großen VFAT-Partition auf dem Speichermedium.<br />

Anschließend gilt es, den freien<br />

Platz zu partitionieren und für den dauerhaften<br />

Einsatz vorzubereiten (Listing 2,<br />

zweite Zeile).<br />

Achten Sie auch hier vor dem Start<br />

des Skripts auf den korrekten Namen<br />

des Laufwerks. Die Routine legt nun eine<br />

weitere Partition auf dem USB-Stick an,<br />

die den gesamten verbleibenden freien<br />

Platz nutzt, und formatiert diese mit<br />

dem Dateisystem Ext4 4 .<br />

Anschließend steht diese Partition<br />

zum Ablegen von Daten bereit. Um das<br />

System vom USB-Stick zu starten, stellen<br />

Sie anschließend im BIOS des Rechners<br />

lediglich sicher, dass die USB-Anschlüsse<br />

im Bootmenü eingetragen sind, und<br />

zwar an erster Stelle.<br />

Fazit<br />

Mit ExTiX 14 steigt eine interessante Allround-Distribution<br />

aus Schweden in den<br />

Ring. Das Betriebssystem verfügt über<br />

eine gute Hardware-Erkennung, arbeitet<br />

stabil und – auf entsprechender Hardware<br />

– angenehm flott.<br />

Durch das Einbinden unterschiedlichster<br />

Online-Dienste und die Option, das<br />

Ubuntu-Derivat auf einem USB-Stick zu<br />

installieren, eignet sich ExTiX 14 zum<br />

Retten von Daten oder zur Online-Kommunikation<br />

ohne verräterische Spuren<br />

auf dem lokalen PC. (agr) n<br />

12 www.linux-user.de<br />

03.2014


Heft-DVD<br />

Parrot Security OS<br />

Security-Distribution Parrot OS<br />

Sicherer Papagei<br />

Mit der sicherheitsorientierten Distribution Parrot OS entsorgen Sie lästige digitale<br />

Quälgeister und schotten Ihr Netz optimal gegen unerwünschte Zugriffe ab. Erik Bärwaldt<br />

Readme<br />

Das auf Debian basierende Parrot OS eignet<br />

sich bestens zur Absicherung heterogener<br />

IT-Umgebungen. Mit einer umfangreichen<br />

Sammlung an Security-Tools hilft es, Lücken<br />

im Netz zu schließen und bereits vorhandene<br />

Störenfriede zu entfernen.<br />

Die Sicherheit heterogener Netze<br />

hängt von vielen Faktoren ab. Dazu gehören<br />

neben dem Absichern der Hardware<br />

das Verschlüsseln von Dateien, ausreichend<br />

starke Authentifizierung sowie<br />

ein sicherer Zugriff auf das Internet. Um<br />

Schwachstellen im Netz effektiv und<br />

ohne lästige Installation vieler einzelner<br />

Tools aufzudecken, bietet sich das Live-<br />

System Parrot OS an, das eine stattliche<br />

Zahl von Werkzeugen mitbringt. Dabei<br />

stehen insbesondere Tools für Penetrationstests<br />

im Vordergrund.<br />

Sie erhalten die Distribution als ISO-<br />

Image im Web û oder, sofern Sie die<br />

Media-Edition dieser Ausgabe erworben<br />

haben, auf Heft-DVD 1. Greifen Sie auf<br />

Listing 1<br />

den Download zurück, gilt es, das etwa<br />

1,8 GByte große Image auf eine DVD zu<br />

brennen oder unter einer anderen Distribution<br />

mithilfe des Befehls aus Listing 1,<br />

Zeile 1, auf einen USB-Stick zu packen.<br />

Gerätenamen<br />

$ dd if=Parrot‐0.8_i386.iso of=/dev/Gerät bs=512k<br />

$ dd if=Parrot‐0.8_amd64.iso of=/dev/Gerät bs=512k<br />

Ersetzen Sie den Namen Gerät durch<br />

den korrekten Gerätenamen des Sticks.<br />

Für die 64-Bit-Variante verwenden Sie<br />

den Befehl aus Listing 1, Zeile 2. Beachten<br />

Sie, dass Tools wie Unetbootin sich<br />

nicht dazu eignen, einen startfähigen<br />

USB-Stick aus dem ISO-Image zu generieren.<br />

Nach dem erfolgreichen Kopieren<br />

ist die Distribution startbereit.<br />

14 www.linux-user.de<br />

03.2014


Parrot Security OS<br />

Heft-DVD<br />

Nach dem Neustart des Rechners haben<br />

Sie in Grub die Wahl zwischen unterschiedlichen<br />

Boot-Optionen, wobei neben<br />

verschiedenen Live-Modi die direkte<br />

Installation auf der Festplatte mit grafischem<br />

Interface bereitsteht. Nach Auswahl<br />

einer Live-Variante startet das System<br />

zügig in einen Mate-Desktop, eine<br />

Weiterentwicklung von Gnome 2, die<br />

kaum für Überraschungen sorgt.<br />

Die Struktur im Menü in der Gruppe<br />

Applications erscheint auf den ersten<br />

Blick ebenfalls sehr konventionell. Das<br />

täuscht jedoch: Der Fokus liegt eindeutig<br />

auf dem Untermenü Parrot, das in einem<br />

guten Dutzend weiterer Verzweigungen<br />

weniger bekannte Security-<br />

Tools für verschiedene Aufgaben vereint.<br />

Allerdings sind zusätzliche wichtige<br />

Tools wie der Virenscanner ClamAV und<br />

dessen grafische Oberfläche ClamTk<br />

oder das Vidalia-Frontend zum Aufbau<br />

einer Internetverbindung über den Tor-<br />

Dienst in anderen Untermenüs platziert.<br />

Ein weiteres neues Untermenü, anon<br />

surf, bietet zudem drei Einträge, um anonym<br />

Zugriff auf das Internet zu erhalten.<br />

Anonymität<br />

Dazu setzt Parrot auf das Tor-Netzwerk.<br />

Hierbei laufen die Daten über mehrere<br />

Server, um Ausgangspunkt und Weg zu<br />

verschleiern. Die Distribution hat den<br />

grafischen Vidalia-Client bereits vorkonfiguriert<br />

mit an Bord. Alternativ starten<br />

Sie den Tor-Daemon über die Konsole.<br />

Hierzu klicken Sie einfach im Menü<br />

Applications | anon surf auf den Eintrag<br />

anonymous mode start. Daraufhin startet<br />

das System in einem Terminal den Tor-<br />

Daemon und konfiguriert diesen. Bei Bedarf<br />

halten Sie den Tor-Daemon durch<br />

einen Klick auf den entsprechenden Eintrag<br />

an oder starten ihn nach einer Unterbrechung<br />

neu.<br />

Bei Bedarf überprüfen Sie die erfolgreiche<br />

Verbindung in Vidalia im Menü<br />

Applications | Internet | Vidalia. Hier sehen<br />

Sie detaillierte Informationen zu<br />

den Tor-Servern anhand einer Weltkarte.<br />

Penetrationstests finden Sie Schwachstellen<br />

in einzelnen Systemen oder kompletten<br />

Netzen. Dazu sammeln entspre-<br />

chende Tools nicht nur Informationen<br />

über die zu testenden Systeme, sondern<br />

unternehmen auch Versuche, in diese<br />

einzudringen. Aufgrund der Vielzahl an<br />

Standards verteilt sich diese Aufgabe auf<br />

viele Werkzeuge, für jedes Szenario ist<br />

eine bestimmte Applikation nötig.<br />

Das System bietet zudem im Untermenü<br />

Web Applications Software an, um<br />

serverseitige Installationen zu analysieren.<br />

So erkennen Sie, ob ein Zugang<br />

über eine Zwischenstation läuft oder besonders<br />

gegen Einbrüche gesichert ist.<br />

Weitere Tools umfassen das Erkennen<br />

installierter Betriebssysteme und unterschiedlicher<br />

Dienste auf einem Server.<br />

Sicherheitslücken<br />

Um ein Netzwerk und die Hardware-<br />

Komponenten auf Sicherheitslücken zu<br />

überprüfen, liefert Parrot OS im Menü<br />

Exploitation Tools eine stattliche Anzahl<br />

an Applikationen mit. Dazu zählen Testprogramme,<br />

die sich für Router des Herstellers<br />

Cisco eignen, aber auch Ziele in<br />

einem Intranet ins Visier nehmen.<br />

Sie steuern die Software teils im Terminal<br />

mithilfe von Parametern, teils gibt<br />

es grafische Frontends, deren Betrieb<br />

selbst ungeübten Nutzern leichtfällt. In<br />

diese Kategorie gehört etwa Penmode2,<br />

das außerdem Tools zum Prüfen von<br />

Passwörtern beinhaltet 1 .<br />

Die Testprogramme sprechen dabei<br />

das zu überprüfende System gezielt an<br />

und versuchen mit unterschiedlichen<br />

Methoden, Authentifizierungen zu manipulieren<br />

oder Lücken in der Konfiguration<br />

auszunutzen, um so Schwachstellen<br />

aufzudecken.<br />

Sammelleidenschaft<br />

Eine Sonderstellung im Portfolio von<br />

Parrot OS nimmt das Programm Maltego<br />

ein, das Sie im Untermenü Applications |<br />

Parrot | Vulnerability Analysis | Open<br />

Source Assessment finden. Diese Applikation<br />

dient dem Profiling mithilfe öffentlich<br />

zugänglicher Informationen. Dabei<br />

wertet die Client-Server-Software im Internet<br />

verfügbare Informationen zu Personen<br />

aus und verknüpft diese miteinan-<br />

Parrot Security OS 0.8.1 (32- und 64-Bit)<br />

bootfähig auf Heft-DVD<br />

1 Das Programm Penmode2 vereint viele<br />

Tools unter einer Oberfläche.<br />

03.2014 www.linux-user.de<br />

15


Heft-DVD<br />

Parrot Security OS<br />

2 Maltego dient dem Profiling durch öffentlich zugängliche Informationen.<br />

der, wobei es auch Social Networks berücksichtigt.<br />

Die einzelnen Korrelationen<br />

stellt es anschließend grafisch dar. Sie<br />

haben dann die Möglichkeit, das so gewonnene<br />

Profil zu bearbeiten, abzuspeichern<br />

und durch weitere Informationen<br />

zu ergänzen 2 . Je nach Komplexität der<br />

gefundenen Daten nimmt das Profiling<br />

allerdings längere Zeit in Anspruch.<br />

Zum Sichern digitaler Spuren bietet<br />

Parrot OS ebenfalls eine stattliche Zahl<br />

an Applikationen, die unterschiedlichste<br />

Bereiche abdecken. So finden Sie im<br />

Menü Applications | Parrot | Forensics<br />

Software zum Auffinden von Schadprogrammen,<br />

aber auch komplette Suiten<br />

wie das Digital Forensics Framework<br />

(DFF), das alle erdenklichen Datenbestände<br />

untersucht und auswertet. Damit<br />

ermöglicht es eine umfassende Sicherung<br />

von Beweismitteln bei vermuteten<br />

Straftaten 3 .<br />

Insbesondere bei forensischen Untersuchungen<br />

kommt abschließenden Berichten,<br />

welche die gewonnenen Erkenntnisse<br />

aufbereitet wiedergeben,<br />

eine zentrale Rolle zu. Parrot OS liefert<br />

zu diesem Zweck im Untermenü Parrot |<br />

Reporting Tools mehrere Programme, die<br />

vorgefundene Daten aufbereiten und in<br />

eine nutzbare Form bringen.<br />

Mit dabei ist Recordmydesktop, das<br />

den Bildschirminhalt fortlaufend aufzeichnet<br />

und so insbesondere forensische<br />

Arbeiten nachzeichnet. Mit dem<br />

Reporting-Tool Dradis, das im Webbrowser<br />

läuft und das Auswerten von verschiedenen<br />

Protokollen gestattet, finden<br />

Sie zudem eine weitere einfach zu handhabende<br />

Applikation zur Analyse. Diese<br />

ermöglicht zusätzlich gemeinsames Arbeiten<br />

an einer Aufgabe.<br />

Fazit<br />

Sicherheitsbewußten Administratoren<br />

sowie Forensikern bietet Parrot OS eine<br />

umfangreiche Suite an Applikationen für<br />

jede erdenkliche Aufgabe. Dabei sind<br />

die wichtigsten Programme bereits vorkonfiguriert<br />

und bedürfen keiner Installation.<br />

Bei vielen Softwarepaketen, die<br />

im Terminal laufen, sollten Sie sich jedoch<br />

zunächst mit der teils umfangreichen<br />

Syntax vertraut machen, um<br />

brauchbare Ergebnisse zu erzielen. Zu<br />

bemängeln sind lediglich einige ausschließlich<br />

in italienischer Sprache vorliegenden<br />

Programme, deren Syntax<br />

sich für Sprachunkundige nicht sofort<br />

erschließt. (agr) n<br />

Weitere Infos und<br />

interessante Links<br />

3 Das Reportingwerkzeug DFF bringt die Daten aus der forensischen Analyse in Form.<br />

www. linux‐user. de/ qr/ 32015<br />

16 www.linux-user.de<br />

03.2014


Aktuelles<br />

Angetestet<br />

Paketschnürer<br />

Mit Rpmerizor 2.7 schnüren<br />

Sie aus bereits installierten<br />

Dateien mit wenig Aufwand ein<br />

RPM- Archiv und binden so von<br />

Hand kompilierte Programme<br />

nachträglich ins Paketmanagement<br />

ein.<br />

Wäre es nicht praktisch, von Hand installierte<br />

Dateien oder Konfigurationen in einem<br />

Paket abzulegen? Zwar gestaltet<br />

sich das Erzeugen eines RPM- oder DEB-<br />

Pakets für normale Anwender alles andere<br />

als trivial, doch zumindest für RPM<br />

schafft Rpmerizor hier Abhilfe und unterstützt<br />

Sie beim Erzeugen von Paketen<br />

aus Dateien, die Sie bereits im System installiert<br />

haben. Um ein einfaches Archiv<br />

zu bauen, rufen Sie die Software mit denjenigen<br />

Dateien oder Verzeichnissen als<br />

Argumente auf, die Sie verpacken wollen.<br />

Rpmerizor ermittelt deren absoluten<br />

Pfad, sodass sich die Inhalte bei der Installation<br />

wieder in derselben<br />

Struktur befinden.<br />

Alternativ definieren Sie<br />

mittels ‐‐rootdir eine<br />

Chroot-Umgebung für<br />

die zu archivierenden Dateien.<br />

Das Tool setzt den<br />

Pfad dann relativ zu dieser<br />

und versucht, Metadaten<br />

wie Namen oder<br />

Versionsnummern aus<br />

dem Verzeichnisnamen<br />

abzuleiten. Die restlichen für das Paket<br />

relevanten Meta-Informationen, wie Release<br />

oder Beschreibung, fragt Rpmerizor<br />

beim Erstellen des Pakets interaktiv<br />

ab, sofern Sie sie nicht schon als Parameter<br />

übergeben haben.<br />

Einige Daten, wie URL oder Paketgruppe,<br />

stehen nur als Parameter bereit. Eine<br />

Liste der verfügbaren Gruppen liefert<br />

‐‐list_group. Um Dateien auszuschließen,<br />

verwenden Sie den Schalter ‐‐exclude.<br />

Pakete lassen sich mit einem<br />

GPG-Schlüssel signieren. Die erzeugten<br />

Pakete legt das Tool im Unterverzeichnis<br />

rpmbuild ab. Hier erzeugt es mit den<br />

Verzeichnissen BUILD, BUILDROOT, RPMS,<br />

SOURCES, SPECS und SRPMS eine konforme<br />

Struktur. Die Pakete finden Sie in<br />

RPMS, die zugehörigen Spezifikationen<br />

unter SPECS. Bevor Sie eigene Pakete erzeugen,<br />

sollten Sie auf jeden Fall einen<br />

Blick in die Manpage werfen. Neben einer<br />

ausführlichen Beschreibung aller Parameter<br />

finden Sie hier nützliche Beispiele.<br />

Lizenz: Lizenz: GPLv2<br />

n<br />

Quelle: http:// rpmerizor. sourceforge. net<br />

Restaurator<br />

Wer alte GW-Basic-Programme<br />

reaktivieren will oder muss, für<br />

den erweist sich PC-Basic 14.01<br />

als ideales Werkzeug.<br />

In den 1980ern diente auf fast jedem System<br />

Basic als Standardsprache, selbst MS-<br />

DOS brachte mit GW-Basic einen Basic-Interpreter<br />

mit. Mit PC-Basic steht ein Klon<br />

von GW-Basic 3.23 für alle gängigen Betriebssysteme<br />

bereit, mit dem Sie alte Basic-Programme<br />

reaktivieren. Da zu starten<br />

Sie PC-Basic mit dem Parameter ‐r, gefolgt<br />

vom Namen der Pro gramm datei. Es<br />

lädt dann den Code und führt ihn sofort<br />

in einem Terminal aus. Das Ansteuern serieller<br />

und paralleler Schnittstellen klappt<br />

ebenso wie die Ausgabe<br />

von Grafik und Sound.<br />

Störendes Gequäke unterbinden<br />

Sie im Zweifelsfall<br />

mit dem Parameter<br />

‐‐nosound. Möchten Sie<br />

den Code vor dem Ausführen<br />

noch bearbeiten,<br />

laden Sie ihn mittels ‐l in<br />

den integrierten Fullscreen-Editor.<br />

Hier arbeiten<br />

Sie wie auf einem<br />

Apple II oder C64 – nicht sehr komfortabel,<br />

aber funktionell. Einige Funktionen<br />

wie load oder save stehen über die<br />

Funktionstasten bereit. Sie verlassen den<br />

Editor mit dem Befehl system. Der integrierte<br />

Editor eignet sich jedoch nur für<br />

kleinere Programme oder Anpassungen.<br />

Für umfangreiche Projekte empfiehlt es<br />

sich, auf einen leistungsfähigen Editor<br />

wie Vim oder Emacs zurückzugreifen. Darüber<br />

hinaus bietet PC-Basic Parameter,<br />

um GW-Basic-Programme in Textdateien<br />

zu konvertieren oder Text-Files in Byte-<br />

Code-Dateien. Auch das Debuggen alter<br />

Basic-Programme gelingt. In Sachen Dokumentation<br />

hält sich PC-Basic jedoch<br />

bedeckt: Die Online-Hilfe ist unvollständig,<br />

eine Manpage suchen Sie vergebens.<br />

Beim Programmieren helfen höchstens<br />

Anleitungen zu GW-Basic.<br />

Lizenz: GPLv3<br />

nn<br />

Quelle: http:// sourceforge. net/ projects/​<br />

pcbasic/rg<br />

18 www.linux-user.de<br />

03.2014


Angetestet<br />

Aktuelles<br />

Bei Beobachter ist der Name Programm:<br />

Mithilfe des Java-Tools behalten Sie die<br />

Protokolldateien des Systems und von<br />

Programmen im Auge. So sehen Sie sofort,<br />

wenn neue Einträge hinzukommen.<br />

Um den Inhalt einer oder mehrerer Dateien<br />

im Auge zu behalten, öffnen Sie diese<br />

in einem Fenster von Beobachter. Die<br />

Software verwaltet die Inhalte in separaten<br />

Bereichen, zwischen denen Sie über<br />

Reiter wechseln. Auf Wunsch ordnet das<br />

Programm die Fenster waagerecht oder<br />

senkrecht an. Bei zahlreichen überwachten<br />

Dateien schränkt dies allerdings den<br />

sichtbaren Bereich je Datei erheblich ein.<br />

Alle geöffneten Dateien verwaltet die Applikation<br />

in einer Sitzung, die Sie bei Bedarf<br />

speichern und später erneut laden.<br />

Standardmäßig aktualisiert Beobachter<br />

Lizenz: GPLv2<br />

nn<br />

Quelle: http:// sourceforge. net/ projects/​<br />

beobachter/<br />

den Inhalt der Fenster drei Mal pro Sekunde,<br />

wodurch Sie neue Einträge stets<br />

sofort sehen. Dabei behält das Programm<br />

in der Voreinstellung je Fenster nur die<br />

letzten 256 Zeilen im Puffer, die Puffergröße<br />

lässt sich jedoch für jedes Fenster<br />

separat einstellen. Die Aktualisierungsintervalle<br />

legen Sie im Typ fest und ordnen<br />

diesen anschließend dem fraglichen<br />

Fenster zu. Damit Sie die wichtigen Informationen<br />

nicht übersehen, bietet Beobachter<br />

die Option, bestimmte Einträge<br />

farblich hervorzuheben.<br />

Welche Einträge es dabei in<br />

welcher Farbe anzeigt, definieren<br />

Sie über die sogenannten<br />

Log-Typen, von<br />

denen jeder verschiedene<br />

Farbmuster enthält. Auf<br />

Wunsch nutzt die Software<br />

dabei reguläre Ausdrücke<br />

oder ignoriert die Groß-/​<br />

Kleinschreibung.<br />

Big Brother<br />

Das Tool Beobachter 1.7.8 hilft<br />

bei der Analyse von Logdateien<br />

und Programmausgaben.<br />

Lizenz: GPLv3<br />

n<br />

Quelle: https:// launchpad. net/ procenv/<br />

Zahlreiche Umgebungsvariablen und Parameter<br />

beeinflussen das Verhalten von<br />

Programmen, zur Kontrolle der jeweiligen<br />

Einstellungen steht ein ganzer Tool-<br />

Zoo bereit. Mit Procenv haben Sie eine<br />

All-in-One-Lösung für die Abfrage aller<br />

relevanten Variablen zur Hand. So ermitteln<br />

Sie mit dem Parameter ‐l die aktuellen<br />

Systemlimits, während ‐L die jeweiligen<br />

Einstellungen der Locale ausgibt.<br />

Weitere Parameter geben Auskunft über<br />

den aktuell verwendeten Compiler, geladene<br />

Bibliotheken, die Konfiguration des<br />

Netzwerks oder Cgroup-Einstellungen.<br />

Auch die Thread-Parameter der aktuellen<br />

Sitzung finden Sie mit dem Tool heraus.<br />

Standardmäßig gibt Procenv alle ermittelten<br />

Informationen in der Konsole aus.<br />

Mit dem Schalter ‐‐file, gefolgt von einem<br />

Dateinamen, leiten Sie die Daten in<br />

eine Textdatei um. Mittels ‐‐format ändern<br />

Sie das aber nach JSON oder XML.<br />

Procenv kennt zahlreiche Parameter, um<br />

alle möglichen Umgebungsvariablen abzufragen.<br />

Nähere Informationen dazu sowie<br />

Beispiele und Anregungen finden Sie<br />

in der Manpage. Alle Parameter<br />

lassen sich nach Bedarf<br />

kombinieren. Das Programm<br />

eignet sich außerdem zur Fehlersuche<br />

in Skripts. An der gewünschten<br />

Stelle eingebunden,<br />

schreibt es die aktuellen<br />

Umgebungsparameter in eine<br />

Datei. So stellen Sie problemlos<br />

fest, ob sich die Konfiguration<br />

verändert hat. (agr) n<br />

Umweltzentrale<br />

Die aktuellen Umgebungsvariablen<br />

einer Sitzung ermitteln<br />

Sie mit Procenv 0.28.<br />

03.2014 www.linux-user.de<br />

19


Schwerpunkt<br />

Powershell vs. Bash<br />

Vergleich: Windows Powershell und Bash<br />

Ungleich<br />

entwickelt<br />

Bash und Powershell sind Verwandte,<br />

aber wie in jeder großen Familie weisen<br />

die Zweige des Stammbaums manchmal<br />

sehr unterschiedliche Formen auf.<br />

Marcus Nasarek<br />

Readme<br />

Die Windows Powershell hat seit der ersten Ausgabe 2006 kräftig<br />

zugelegt. Die Bash dagegen ist ihrem Wesen treu geblieben.<br />

Ein Vergleich zeigt, wie sich die Ansätze auf der Kommandozeile<br />

unter Windows und Linux unterscheiden.<br />

© ariwasabi, 123RF<br />

Neuanfang<br />

Mit Windows wollte Microsoft zeigen, dass eine grafische Oberfläche<br />

zum Bedienen des Computers ausreicht. Für eine schmucklose Shell<br />

war kein Platz, und so fristete die Kommandozeile über Jahrzehnte<br />

ein Dasein in der Nische. Trotz aller Vorsätze brauchte es zum Verwalten<br />

des Systems aber <strong>Skripte</strong>. Daher begann unter Windows ein regelrechter<br />

Wildwuchs an Interpreter-Sprachen. Über die Jahre entstanden<br />

der Windows Scripting Host (WSH), das Windows Management<br />

Interface (WMI), HTML Applications (HTA), Active Directory Services<br />

Interface (ADSI) und Visual Basic Script (VBS).<br />

Mit Windows Vista stellte Microsoft das System auf eine neue Grundlage.<br />

Desktop- und Server-Ausgabe teilten sich die gleiche Code-Basis.<br />

Die Entwickler überarbeiteten die Struktur der Systemarchitektur<br />

und legten alles auf wiederverwendbare Objekte aus. Das .NET-<br />

Framework sollte die einheitliche Basis für moderne Anwendungen<br />

bilden und quasi wie bei Lego die Bausteine für andere Programme<br />

liefern. Ein Interpreter sollte auf die Systembibliothek zugreifen dürfen.<br />

Die neue Shell sollte also das, was moderne Interpreter wie Python<br />

und Ruby unter Linux längst draufhatten, nun auch unter Windows<br />

einführen. Die Powershell arbeitet daher objektorientiert. Sie kann<br />

die Ausgaben eines Kommandos in einer Pipe an ein anderes Kommando<br />

weitergeben, und es besteht die Möglichkeit, die .NET-Komponenten<br />

einzubinden. Aus der Perspektive moderner Skriptsprachen<br />

war das zunächst kein Novum, für Microsoft aber stellte es einen<br />

Schritt hin zur professionellen Administration des Systems dar.<br />

Seit 2006 hat das Unternehmen vier Generationen der Powershell auf<br />

die Welt losgelassen. Windows 7 enthält die Powershell 2.0, Windows<br />

8 die Powershell 3.0 mit zahlreichen Neuerungen. Die aktuelle<br />

Version 4.0 entstand für Windows 8.1 und kommt in Kombination mit<br />

dem .NET-Framework 4.5.1 als Update auch unter Windows 7 und<br />

Windows 8 ins System.<br />

20 www.linux-user.de<br />

03.2014


Powershell vs. Bash<br />

Schwerpunkt<br />

Seit unserem letzten Blick auf die Kommandozeilen<br />

unter Windows und Linux<br />

sind einige Jahre ins Land gegangen û<br />

– es ist an der Zeit, zu schauen, wie sich<br />

die beiden Kontrahenten in einem halben<br />

Jahrzehnt entwickelt haben. Ein Vergleich<br />

der Windows Powershell und der<br />

Bash zeigt, wer in Sachen modernes<br />

<strong>Skripte</strong>n die Nase vorn hat.<br />

Die Windows Powershell war 2006 unter<br />

Windows Vista ein kompletter Neuanfang<br />

für Microsofts Kommandozeile<br />

(siehe Kasten Neuanfang). Die Bash unter<br />

Linux dagegen stand seit jeher im<br />

Mittelpunkt des Systems (siehe Kasten<br />

Bewährtes). Kontinuierlich entwickelten<br />

die Beteiligten die Schnittstelle weiter.<br />

Es stellt sich dabei die Frage: Ist die Bash<br />

gereift und vermag sich mit neuen Ansätzen<br />

zu messen, oder trägt sie eher<br />

schwer an ihrem Erbe?<br />

Vergleich der Konzepte<br />

Zu den wichtigsten Eigenschaften einer<br />

Skriptsprache gehört das Verknüpfen<br />

von Kommandos. Das setzt voraus, ein<br />

Kommando die Ausgaben eines anderen<br />

erhält, versteht und zur gewünschten<br />

Ausgabe aufbereitet. Die Bash nutzt in<br />

der Regel reinen Text als Ein- und Ausgabe.<br />

So liefert der folgende Aufruf die<br />

Größe und den Namen der drei größten<br />

Dateien im Verzeichnis / var/log:<br />

$ ls ‐l /var/log | sed 's/ \+/,/gU<br />

' | cut ‐d',' ‐f 5,9 | sort ‐g | U<br />

tail ‐3<br />

267453,kern.log<br />

443742,kern.log.1<br />

584584,lastlog<br />

Bei der Windows Powershell sind alle<br />

Ein- und Ausgaben Objekte. Es wandern<br />

also ganze Datenstrukturen von Kommando<br />

zu Kommando. Das setzt voraus,<br />

dass sich die Objekte an bestimmte Vorgaben<br />

halten. Um eine ähnliche Ausgabe<br />

wie mit der oben gezeigten Pipe unter<br />

Windows zu erhalten, brauchen Sie<br />

das Wissen um die Eigenschaften der<br />

entsprechenden Objekte:<br />

PS> Get‐ChildItem ‐Directory | SoU<br />

rt‐Object ‐Property Length | SeleU<br />

ct‐Object Length,Name ‐Last 3<br />

Length Name<br />

‐‐‐‐‐‐ ‐‐‐‐<br />

597379 Manual.pdf<br />

5715026 Applications.in.Ruby.pdf<br />

27318109 AnnualCatalogue_de‐EU.pdf<br />

Dass bei der Bash die Ausgaben als Text<br />

vorliegen, erleichtert freilich das Anpassen<br />

der Optionen zum Verarbeiten des<br />

nächsten Programms. Meist läuft es dabei<br />

auf Ausprobieren hinaus – das klappt<br />

bei der Powershell nur eingeschränkt.<br />

Im Beispiel brauchen Sie die Eigenschaften<br />

Length und Name. Intuitiv hätten<br />

Sie vielleicht als Eigenschaft für die<br />

Dateigröße auf Size getippt, statt auf<br />

Length. Um die Eigenschaften eines Objekts<br />

also sicher zu kennen, bleibt oft nur<br />

der Griff zur Dokumentation.<br />

Dabei gestaltet sich der obige Aufruf<br />

aus der Powershell 3.0 schon einfacher<br />

als aus den Vorgängerversionen: Anfangs<br />

kannte das Cmdlet Get‐ChildItem<br />

die Option ‐Directory noch nicht. Daher<br />

galt es, ein zusätzliches Cmdlet zum<br />

Ausfiltern von Verzeichnissen – Where‐Object<br />

{‐not $_.PSIsContainer} –<br />

Cmdlet: Eingebaute Funktion in der Powershell,<br />

ähnlich den Builtins der Bash. So entspricht<br />

das Cmdlet Get‐ChildItem in<br />

etwa dem Kommando ls.<br />

in die Pipe einzubauen, denn nur Verzeichnisse<br />

haben die Eigenschaft PSIs‐<br />

Container.<br />

Der Unterschied bei der Ein- und Ausgabe<br />

von Daten ist nur einer von vielen<br />

zwischen Bash und Powershell, jedoch<br />

springt er sofort ins Auge. Grundsätzlich<br />

unterscheiden sich die Konzepte der<br />

beiden Shells: Die Bash zielt auf Arbeitsteilung<br />

ab, die Powershell orientiert sich<br />

an den Aufgaben. Das verstärkte sich<br />

noch in den Versionen 3.0 und 4.0.<br />

Steile Lernkurve<br />

Die Bash kommt mit knapp 40 internen<br />

Funktionen und 100 Hilfsprogrammen<br />

zurecht. Die Powershell 4.0 verfügt be-<br />

Bewährtes<br />

Die Entwicklung der Shell Bash unter Linux erfolgte im Gegensatz<br />

zur Powershell recht gradlinig: Gerade einmal 111 Neuerungen<br />

flossen seit unserem letzten Vergleich 2007 in die Bash ein û, der<br />

größte Teil davon beim Sprung von der Version 3.2 zur Version 4.0<br />

im Jahr 2009. Die geringen Änderungen bis zur aktuellen Version<br />

4.2 zeigen, dass die Bash recht ausgereift ist.<br />

Knapp die Hälfte (18 von 39) aller eingebauten Funktionen der<br />

Bash stammen aus der Bourne Shell. Die Funktionen cd und test<br />

zählen sicher zu den häufigsten Aufrufen, aber auch zu den echten<br />

Fossilien unter den Kommandos. Die andere Hälfte der Funktionen,<br />

darunter echo und read kamen erst in der Bourne Again Shell<br />

Bash dazu. Sie dienen alltäglichen Aufgaben; Spezielleres überlässt<br />

die Bash anderen Programmen.<br />

Aufgabenteilung gehört ja bekanntlich zum Konzept von Linux. Die<br />

Login-Shell hat eher die Funktion einer Kommandozentrale für die<br />

vielen spezialisierten Programme. So zählen knapp 100 Programme<br />

zu den GNU Coreutils, einer Sammlung, die so gut wie jeder Linux-<br />

Distribution beiliegt û.<br />

03.2014 www.linux-user.de<br />

21


Schwerpunkt<br />

Powershell vs. Bash<br />

Assembly: Kompilierte Klassen einer Bibliothek,<br />

die modernen Versionen von DLL-<br />

Bibliotheken. Ein Assembly gleicht vom<br />

Prinzip einem Shared Object unter Linux. Es<br />

besteht die Möglichkeit, Assemblies in ein<br />

Skript zu laden und deren Funktionen darin<br />

zu nutzen.<br />

reits über 299 eingebaute Cmdlets. In<br />

der Version 2.0 (Windows 7) waren es<br />

noch 251. Jedes Cmdlet verfügt über<br />

Optionen, von denen mit jeder Version<br />

der Powershell neue hinzukommen.<br />

So verfügt das Cmdlet Get‐Content ab<br />

Version 3.0 (Windows 8) über die Option<br />

‐Tail Anzahl, welche die Entwickler augenscheinlich<br />

dem Unix-Programm Tail<br />

entlehnt haben. Für einen Einstieg in die<br />

Neuerungen der Powershell helfen kurze<br />

Übersichten von Microsoft û.<br />

Die Cmdlets erscheinen im Vergleich<br />

zu den Builtins der Bash als Miniprogramme.<br />

Dies spüren Sie immer dann,<br />

wenn die letzte Verwendung eines Cmdlet<br />

schon etwas zurückliegt. Dann<br />

braucht es meist einen Blick in die Referenz,<br />

um die korrekten Parameter und<br />

Optionen zu finden. Im Gegenzug erledigen<br />

die Cmdlets komplexere Aufgaben<br />

in einem Aufruf. Um etwa alle Links<br />

in der Webseite linux‐user.de auszugeben,<br />

genügt ab Powershell 3.0 der Aufruf<br />

aus Listing 1.<br />

Manchmal erscheint das Orientieren<br />

an Aufgaben recht einseitig und macht<br />

einige Aufgaben etwas umständlich. Um<br />

ein Passwort zu generieren, genügt es<br />

unter der Bash, den Datei-Deskriptor für<br />

den Zufallsgenerator auszulesen und ein<br />

wenig aufzubereiten (Listing 2).<br />

Um unter der Powershell 3.0 Ähnliches<br />

zu erreichen, besteht eine Möglichkeit<br />

darin, eine Systembibliothek aus<br />

dem .NET-Framework nachzuladen und<br />

ein Modul daraus zu nutzen: Es gibt im<br />

Assembly System.Web das Modul Security.Membership<br />

und dort die Funktion<br />

GeneratePassword (Listing 3).<br />

Bei der Powershell stellt sich die Frage:<br />

Wie kommen Sie an die Information,<br />

welche Objekte welche Methoden anbieten,<br />

und in welcher der mehreren<br />

Tausend Systembibliotheken versteckt<br />

sich eine Funktion GeneratePassword?<br />

Hinter der Antwort steckt Fleißarbeit: Es<br />

erfordert ein Studium der extrem um-<br />

fangreichen Referenz zum .NET-Framework<br />

û, um dessen Möglichkeiten richtig<br />

auszureizen.<br />

Hilfestellung<br />

Um in der Bash herauszufinden, welches<br />

Kommando weiterhilft, genügt ein Aufruf<br />

von apropos Stichwort. Das listet<br />

alle Kommandos auf, in deren Hilfeseiten<br />

das Stichwort vorkommt. Will man<br />

nur wissen, welche Optionen ein Kommando<br />

unterstützt, liefert meist ein Aufruf<br />

desselben ohne Parameter eine kurze<br />

Übersicht. Und falls Sie den Umgang<br />

mit der Bash besser beherrschen möchten,<br />

hilft ein Blick in die Referenz û.<br />

Bei der Powershell gibt es zwar ein<br />

Cmdlet Get‐Help, oft hilft das jedoch<br />

insbesondere Einsteigern beim Umgang<br />

mit komplexen Objekten nicht weiter.<br />

Microsoft hat der Powershell daher eine<br />

kleine Entwicklungsumgebung mitgegeben,<br />

die nebenbei eine interaktive<br />

Übersicht über die Befehle enthält. Sie<br />

erlaubt es, die Eigenschaften eines Cmdlets<br />

zu erforschen und darüber hinaus zu<br />

testen, wie man es aktiviert beziehungsweise<br />

konfiguriert 1 .<br />

Das Powershell Integrated Scripting<br />

Environment ISE erweist sich als ziemlich<br />

nützlich, da es nicht nur den Umgang<br />

mit Cmdlets erleichtert, sondern auch einen<br />

Debugger enthält. Damit führen Sie<br />

1 Die Entwicklungsumgebung<br />

Powershell ISE ist<br />

Bestandteil der Powershell-Installation.<br />

22 www.linux-user.de<br />

03.2014


Schwerpunkt<br />

<strong>Skripte</strong> schrittweise aus, was die Fehlersuche<br />

erleichtert. Außerdem besteht damit<br />

die Möglichkeit, direkt aus der Ferne<br />

eine Powershell auf einem anderen PC zu<br />

starten, ähnlich wie mit SSH unter Linux.<br />

Damit das klappt, muss auf dem Zielcomputer<br />

der Administrator per Enable‐<br />

PSRemoting ‐Force den Re mote-Zugriff<br />

erlauben. Damit startet der WinRM-<br />

Dienst, der den Zugang bereitstellt.<br />

Für Admins unter Linux stellt sich die<br />

Frage einer Entwicklungsumgebung für<br />

<strong>Skripte</strong> gar nicht: Leistungsfähige Editoren<br />

wie Vim oder Emacs verfügen über<br />

zahlreiche Funktionen, die das Skripting<br />

erleichtern, wie etwa Syntax-Highlighting,<br />

komplexe Funktionen zum Navigieren<br />

in <strong>Skripte</strong>n und eingebaute Makrosprachen.<br />

Derartige Editoren zählten<br />

bislang unter Windows so nicht zum<br />

Standardumfang.<br />

Fazit<br />

Die Beispiele zeigen, wie unterschiedlich<br />

die Konzepte der Shells ausfallen. Zwar<br />

erleichtern Aliase wie ls, mkdir und ps<br />

den Umstieg für Admins von Unix auf<br />

Windows, aber ob diese Rechnung aufgeht,<br />

darf man getrost bezweifeln.<br />

Die Powershell spielt ihre Stärken<br />

beim Administrieren der Server-Anwendungen<br />

von Microsoft aus. Die Cmdlets<br />

sind so zugeschnitten, dass sie häufige<br />

Aufgaben in wenigen Schritten erledigen.<br />

Dass anstelle von einfachem Text<br />

ganze Objekte zur Kommunikation dienen,<br />

ist eher dem darunterliegenden<br />

Framework geschuldet als einer Vereinfachung<br />

für die Administration.<br />

Die Bash verfolgt einen vollständig anderen<br />

Ansatz: Beim Shell-Skripting geht<br />

es nicht um das Verwalten von Produkten,<br />

sondern um möglichst vielseitige<br />

Werkzeuge. Für komplexere Aufgaben<br />

stehen spezialisierte Interpreter wie Perl<br />

und Ruby bereit. Das System an sich verwalten<br />

Sie aber vor allem mit der<br />

Bash. (agr) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31429<br />

Listing 1<br />

PS> (Invoke‐WebRequest http://www.linux‐user.de/).links<br />

innerHTML : <br />

innerText :<br />

outerHTML : <br />

outerText :<br />

tagName : A<br />

href : /<br />

Listing 2<br />

$ echo $(< /dev/urandom tr ‐dc _A‐Z‐a‐z‐0‐9 | head ‐c10)<br />

Kc‐TUGC8cd<br />

Listing 3<br />

PS> $Assembly = Add‐Type ‐AssemblyName System.Web<br />

PS> [System.Web.Security.Membership]::GeneratePassword(10,3)<br />

lGv%.ua]Wl<br />

03.2014 www.linux-user.de<br />

23


Schwerpunkt<br />

Guter Skript-Stil<br />

Bash-<strong>Skripte</strong> leserlich<br />

programmieren<br />

Die<br />

richtigen<br />

Zutaten<br />

Das geniale Skript aus dem<br />

letzten Monat enthält nur<br />

konfusen Spaghetti-Code,<br />

der nicht mehr verrät, was er<br />

tut? Mit unseren Tipps aus<br />

erprobten Styleguides sorgen<br />

Sie für Ordnung und Lesbarkeit.<br />

Tim Schürmann<br />

© Natalia Klenova, 123RF<br />

Readme<br />

Styleguides helfen mit ihren Richtlinien,<br />

Bash-<strong>Skripte</strong> zu strukturieren sowie übersichtlicher<br />

und lesbarer zu gestalten. So<br />

klappt das spätere Anpassen schneller –<br />

und darüber hinaus verhindern Sie auf<br />

diese Weise unerwünschte Nebeneffekte.<br />

Bash-<strong>Skripte</strong> helfen dabei, Dateien umzubenennen,<br />

eine große Adressliste zu<br />

sortieren oder andere lästige Aufgaben<br />

zu erledigen. Die meist unter hohem<br />

Zeitdruck geschriebenen <strong>Skripte</strong> sehen<br />

häufig abenteuerlich aus (Listing 1). Die<br />

Hacks erfüllen zwar ihren Zweck, sind<br />

aber oft unübersichtlich, und die Funktionsweise<br />

ist meist eine Woche später oft<br />

komplett unklar. Aus diesem Grund geben<br />

viele Anwender die berühmten Einzeiler<br />

nicht weiter: Die Empfänger müssten<br />

sich erst langwierig einlesen. Letztendlich<br />

ist ein solches kryptisches Skript<br />

nur schwer zu erweitern oder zu ändern.<br />

Aus diesen Gründen sollten Sie Bash-<br />

<strong>Skripte</strong> von Anfang an strukturieren, formatieren<br />

und vor allem kommentieren.<br />

Dabei helfen Richtlinien, wie sie erfahrene<br />

Programmierer in sogenannten Styleguides<br />

festgehalten haben. Zwei bekannte<br />

Leitfäden stammen der Fachhochschule<br />

Südwestfalen û und von<br />

Goo gle û Ob Sie lieber der privatwirtschaftlichen<br />

Anleitung 1 folgen oder<br />

der akademischen 2 , das bleibt ganz<br />

Ihrem Geschmack überlassen; die grundlegenden<br />

Richtlinien sind überall gleich.<br />

So sollte Ihr Skript zu Beginn immer die<br />

passende Shell nennen. Nutzt es etwa<br />

24 www.linux-user.de<br />

03.2014


Guter Skript-Stil<br />

Schwerpunkt<br />

Bei einer Case-Abfrage rücken Sie die<br />

Alternativen um zwei Leerzeichen nach<br />

rechts ein. Die Muster gehören – genau<br />

wie die zugehörigen Anweisungen – in<br />

jeweils eine eigene Zeile. Ein Beispiel<br />

dafür zeigt Listing 3.<br />

Mehrere Kommandos verknüpfen Sie<br />

bei Bedarf über Pipes, wie etwa ls ‐la<br />

| grep TODO. Links und rechts vom Pipe-<br />

Zeichen steht dabei jeweils ein Leerzeichen.<br />

Besteht die Kette aus mehr als<br />

zwei Elementen, sollten Sie die einzeldie<br />

Funktionen der Bash, schreiben Sie<br />

#!/bin/bash in die erste Zeile. Damit<br />

funktioniert das Skript ebenfalls auf Systemen,<br />

die die Bash nicht als Standard-<br />

Shell einsetzen, diese aber trotzdem installiert<br />

haben.<br />

Frischluftzufuhr<br />

Um das Skript übersichtlicher und leserlicher<br />

zu gestalten, sollten Sie den Code<br />

immer mit Einrückungen und Leerzeilen<br />

versehen. Listing 1 verwandelt sich auf<br />

diese Weise in das schon nicht mehr<br />

ganz so kryptische Listing 2. Jede Zeile<br />

nimmt dabei eine Anweisung auf, eine<br />

Leerzeile trennt zusammengehörende<br />

Teile des Codes. Letzteres trifft in Listing<br />

2 etwa auf die For-Schleife zu. Die<br />

Anweisungen innerhalb eines solchen<br />

Blocks sollten Sie jeweils um eine Stufe<br />

nach rechts einrücken. Nutzen Sie dazu<br />

immer Leerzeichen und keine Tabulatoren:<br />

Letztere interpretieren Editoren unterschiedlich.<br />

Beinahe unisono empfehlen<br />

die Styleguides, jeden Tabulator<br />

durch zwei Leerzeichen zu ersetzen.<br />

1 Detaillierte Informationen zu den einzelnen Richtlinien erhalten Sie bei Google,<br />

wenn Sie das Dreieck vor einer der Regeln anklicken.<br />

Richtiger Abschluss<br />

In Listing 2 steht das do in einer eigenen<br />

Zeile. Google empfiehlt, es noch in die<br />

Zeile mit dem for zu ziehen. Analoges<br />

gilt für eine While-Schleife sowie das<br />

then bei einem If-Block. Das else steht<br />

vorzugsweise wieder in einer eigenen<br />

Zeile, genauso wie das abschließende<br />

done. Apropos If-Anweisung: Google rät,<br />

anstelle von test und für dessen Abkürzung<br />

mit eckigen Klammern die doppelten<br />

Klammern zu verwenden:<br />

if [[ ${dateiname} == "bild*" ]];U<br />

then ...<br />

Diese Notation hat außerdem den Vorteil,<br />

dass sie reguläre Ausdrücke verar-<br />

Listing 1<br />

#!/bin/sh<br />

beitet. Zudem reduziert sie Fehler im<br />

Skript, da die doppelten Klammern weder<br />

eigenmächtig Wörter abschneiden<br />

noch Dateinamen erweitern.<br />

Im Umbruch<br />

a="100"; b="3"; c="."; d="shot"; for i in `seq 1 $a`; do import ‐window<br />

root $c/$d$i.png; sleep $b; done; exit<br />

Listing 2<br />

#!/bin/bash<br />

a="100"<br />

b="3"<br />

c="."<br />

d="shot"<br />

for i in `seq 1 $a`<br />

do<br />

import ‐window root<br />

$c/$d$i.png;<br />

sleep $b<br />

done;<br />

exit<br />

03.2014 www.linux-user.de<br />

25


Schwerpunkt<br />

Guter Skript-Stil<br />

nen Befehle in jeweils eine eigene Zeile<br />

schreiben. Die nachfolgenden Zeilen rücken<br />

Sie dabei mit zwei Leerzeichen eine<br />

Stufe nach rechts ein, wie es Listing 4<br />

zeigt. Ganz nebenbei fallen auf diese<br />

Weise lange Parameterlisten so übersichtlicher<br />

aus (Listing 5).<br />

Des Weiteren rät Google, sämtliche<br />

Zeilen nach 80 Zeichen zu umbrechen;<br />

der Styleguide der FH Südwestfalen gestattet<br />

dagegen 88 Zeichen. Beachten<br />

Sie diese Grenzen, fällt es leicht, das<br />

Skript zu drucken oder in kleinen Fenstern<br />

ohne lästiges vertikales Scrollen zu<br />

begutachten und zu bearbeiten 3 .<br />

(brief_anrede). Es empfiehlt sich zudem,<br />

mit Plural und Singular auf den<br />

Inhalt zu verweisen. Das hilft vor allem<br />

beim Schreiben von Schleifen:<br />

for zahl in ${zahlen}; do<br />

echo ${zahl}<br />

done<br />

Fassen Sie Variablen immer in geschweifte<br />

Klammern ein, wie etwa ${nachname}.<br />

Setzen Sie Strings, die Variablen enthalten,<br />

in Anführungszeichen:<br />

name="Herr ${nachname}"<br />

Listing 3<br />

case "${auto}" in<br />

porsche)<br />

motor="brumm"<br />

echo "${motor}"<br />

;;<br />

*)<br />

echo "Kein bekanntes Auto"<br />

;;<br />

esac<br />

Listing 4<br />

Befehl1 \<br />

| Befehl2 \<br />

| Befehl3<br />

Listing 5<br />

./configure \<br />

‐‐prefix=$HOME \<br />

‐‐enable‐audio \<br />

‐‐enable‐video<br />

Lagerstätten<br />

Welchen Wert die Variable a in einem<br />

beliebigen Skript enthält, das erahnt der<br />

geneigte Leser im besten Fall durch den<br />

Kontext. Benennen Sie Variablen deshalb<br />

immer möglichst aussagekräftig.<br />

Wählen Sie sprechende Namen, die den<br />

Inhalt der Variablen beschreiben: Was<br />

etwa die Variable dateiname speichert,<br />

erkennen Sie noch in einem Jahr ohne<br />

weitere Information.<br />

Die Namen sollten zudem kurz und<br />

prägnant ausfallen, verwenden Sie nicht<br />

mehr als 31 Zeichen. Nehmen Sie sich<br />

auch unter Druck etwas Zeit, um passende<br />

Variablennamen zu finden – es zahlt<br />

sich später aus.<br />

Groß oder klein<br />

Die meisten Styleguides schlagen vor,<br />

Variablen durchgehend klein (zaehler),<br />

Konstanten hingegen durchgehend<br />

groß (ANZAHL) zu schreiben. Die Konstanten<br />

sollten Sie zudem gesammelt am<br />

Anfang des Skripts definieren. Achten<br />

Sie bei der Wahl des Namens darauf,<br />

dass Sie nicht versehentlich reservierte<br />

Namen der Umgebungsvariablen verwenden.<br />

Eine Liste dieser Namen finden<br />

Sie im Web û.<br />

Wollen Sie auf Nummer sicher gehen,<br />

stellen Sie den Namen der Konstanten<br />

ein Präfix voran (ABC_ANZAHL). Setzt sich<br />

der Name einer Variablen aus mehreren<br />

Wörtern zusammen, trennen Sie die Bestandteile<br />

durch einen Unterstrich<br />

Damit stellen Sie sicher, dass die Bash<br />

die Variable korrekt ersetzt. Mit den neuen<br />

Namen für die Variablen sieht das<br />

Skript aus Listing 1 schon etwas verständlicher<br />

aus: Wie Listing 6 zeigt, geht<br />

es um eine Anzahl von Bildern, die das<br />

Skript auf bestimmte Weise verarbeitet.<br />

Zahlen stehen nur dann in Anführungszeichen,<br />

wenn sie Teil eines Strings<br />

sind. Damit keine falschen Werte in<br />

nachfolgende Berechnungen wandern,<br />

sollten Sie Variablen immer mit einem<br />

Wert initialisieren. Ändert sich der Inhalt<br />

einer Variablen nicht mehr, kennzeichnen<br />

Sie dies explizit mit dem Schlüsselwort<br />

readonly:<br />

ergebnis = mach_was<br />

readonly ergebnis<br />

Gibt es im weiteren Verlauf dennoch<br />

eine Veränderung, meldet die Bash einen<br />

Fehler. Damit ersparen Sie sich eine<br />

langwierige Fehlersuche.<br />

Hübsch eingekesselt<br />

Funktionen benennen Sie nach dem<br />

gleichen Schema wie Variablen. Wählen<br />

Sie dabei keine Namen, die wie Systemfunktionen<br />

oder Befehle heißen – insbesondere<br />

ist test absolut tabu. Immer<br />

wieder streiten sich Entwickler leidenschaftlich<br />

darüber, wo die geschweiften<br />

Klammern stehen sollten. Die Hinweise<br />

von Google empfehlen, die erste geschweifte<br />

Klammer wie im folgenden<br />

Beispiel direkt hinter den Namen der<br />

26 www.linux-user.de<br />

03.2014


Guter Skript-Stil<br />

Schwerpunkt<br />

Funktion zu schreiben. Die schließende<br />

geschweifte Klammer des Blocks steht<br />

hingegen in einer eigenen Zeile:<br />

function meine_funktion() {<br />

... Kommandos ...<br />

}<br />

Im obigen Beispiel hilft das Schlüsselwort<br />

function, eine Funktion schnell als<br />

solche zu erkennen. Das erschwert jedoch<br />

das Portieren, weshalb die meisten<br />

Styleguides von function abraten.<br />

Lokale Variablen kennzeichnen Sie innerhalb<br />

einer Funktion mit dem Schlüsselwort<br />

local. Damit überfluten Sie<br />

nicht den globalen Namensraum oder<br />

ändern gar versehentlich irgendwo die<br />

falsche Variable:<br />

berechne() {<br />

local zahl=1<br />

...<br />

Des Weiteren sollten Sie sich angewöhnen,<br />

den Rückgabewert einer Funktion<br />

zu prüfen. Sofern eine Funktion nichts<br />

berechnet, sollte sie zumindest ihr erfolgreiches<br />

Ende oder einen Fehler verkünden.<br />

Prüfen sollten Sie unbedingt<br />

alle beim Aufruf an das Skript übergebenen<br />

Parameter: Von Benutzern falsch<br />

oder gar nicht übergebene Parameter<br />

könnten sonst zu unerfreulichen Ergebnissen<br />

führen.<br />

Argumente<br />

Falls Sie Argumente mit $@ oder $* weiterreichen<br />

möchten, räumt dazu Googles<br />

Styleguide immer $@ den Vorzug ein:<br />

Während $* alle Argumente zu einem<br />

zusammenklebt und einen String ausliefert,<br />

belässt $@ die Argumente û.<br />

Sammeln Sie alle Funktionsdefinitionen<br />

am Anfang, idealerweise hinter den<br />

Konstanten. So finden Sie bei langen<br />

<strong>Skripte</strong>n schnell den Startpunkt , verpacken<br />

Sie das Hauptprogramm in eine<br />

Funktion namens main. Googles Styleguide<br />

schreibt das Vorgehen für alle<br />

<strong>Skripte</strong> vor, die mindestens eine Funktion<br />

definieren. Ganz am Ende des Skript<br />

steht der Aufruf main "$@".<br />

2 Der Styleguide der FH Südwestfalen liegt als PDF vor – und geht nicht nur auf die Formatierung<br />

ein.<br />

Listing 6 nutzt sogenannte Backticks –<br />

also nach links geneigte, einfache Anführungszeichen<br />

– um ein Kommando<br />

einzubetten. Diese Syntax ist jedoch fehleranfällig<br />

und unübersichtlich, insbesondere<br />

bei verschachtelten Befehlen.<br />

Sie sollten die Backticks daher durch die<br />

modernere Notation $(Kommando) austauschen.<br />

In Listing 6 würde die fragliche<br />

Zeile damit so aussehen:<br />

for i in $(seq 1 ${ANZAHL_BILDER}U<br />

); do<br />

Nutzen Sie immer Pfadangaben, wenn<br />

Sie Dateien verarbeiten. Andernfalls landen<br />

Dateien schnell im falschen Verzeichnis.<br />

Beim Löschen mittels rm und<br />

ähnlichen Aktionen droht die Gefahr,<br />

dass Sie ungewollt Verzeichnisse ins Nirvana<br />

schicken. Google nennt hier als Beispiel<br />

rm ‐v *, das neben den Dateien<br />

alle Unterverzeichnisse des aktuellen<br />

Ordners löscht, während rm ‐v ./* nur<br />

die Dateien von der Platte radiert.<br />

Listing 6<br />

#!/bin/bash<br />

ANZAHL_BILDER=100<br />

WARTEZEIT_SEKUNDEN=3<br />

SPEICHERORT="."<br />

PRAEFIX_DATEINAME="shot"<br />

for i in `seq 1<br />

${ANZAHL_BILDER}`; do<br />

import ‐window root<br />

"${SPEICHERORT}/<br />

${PRAEFIX_DATEINAME}${i}.png";<br />

sleep ${WARTEZEIT_SEKUNDEN}<br />

done;<br />

exit<br />

03.2014 www.linux-user.de<br />

27


Schwerpunkt<br />

Guter Skript-Stil<br />

Finger weg heißt es außerdem von ls<br />

und seinen Ausgaben: Zum einen besteht<br />

die Möglichkeit, dass die zurückgelieferten<br />

Dateinamen Zeilenumbrüche<br />

enthalten, zum anderen folgt die Ausgabe<br />

auf jedem System einer etwas anderen<br />

Konvention.<br />

Meiden Sie auch eval. Sie verlieren die<br />

Kontrolle über den Code, den die Shell<br />

ausführt. Zudem erfahren Sie nicht, ob<br />

das Kommando erfolgreich war und was<br />

genau es wie verändert hat.<br />

Geben Sie den in der Bash eingebauten<br />

Kommandos den Vorzug, und verketten<br />

Sie beispielsweise Strings nicht mit einem<br />

externen Programm. Zum einen<br />

wissen Sie nicht, ob dieses externe Programm<br />

auf anderen Computern vorhanden<br />

ist, zum anderen verhält es sich<br />

nach einem Update unter Umständen<br />

anders als erwartet. Da die Bash nicht<br />

extra einen neuen Prozess zu starten<br />

braucht, läuft Ihr Skript mit den internen<br />

Kommandos zudem wesentlich schneller<br />

ab – insbesondere, sobald Schleifen<br />

ins Spiel kommen.<br />

Rufen Sie aus Ihrem Skript externe<br />

Programme auf, nutzen Sie die Parameter<br />

möglichst immer in der Langform,<br />

also grep ‐‐version anstelle von grep<br />

‐V. In dieser Version erschließt sich die<br />

Bedeutung des Parameters schneller.<br />

Falls Ihr Skript Parameter anbietet, sollten<br />

diese ebenfalls in einer Lang- und<br />

Kurzfassung bereitstehen.<br />

Anregungen für den Aufbau von Parametern<br />

liefert die Free Software Foundation<br />

in ihren GNU Coding Standards û,<br />

häufig verwendete Parameter mit ähnlichen<br />

Bedeutungen listet das Linux Documentation<br />

Project û auf.<br />

Lattenzäune<br />

Auch, wenn Sie unter Zeitdruck stehen:<br />

Kommentieren Sie Ihre Skripts. Nur so<br />

verstehen Sie auch noch nach einer<br />

Woche, was das Skript an welchen Stellen<br />

macht und warum. Am Anfang Ihres<br />

Skripts beschreiben Sie zunächst kurz<br />

seine Aufgabe:<br />

#!/bin/bash<br />

#<br />

# Schießt regelmäßig einen ScreenU<br />

shot<br />

Der Styleguide der FH Südwestfalen<br />

empfiehlt zusätzlich noch weitere Angaben,<br />

wie den Autor und die Versionsnummer.<br />

Grundsätzlich sollte nach jedem<br />

Hash (#) ein Leerzeichen folgen. Damit<br />

lassen sich die Kommentare leichter<br />

erkennen und lesen.<br />

Vor jede Funktion gehört ebenfalls ein<br />

Kommentar, der deren Zweck verrät,<br />

kurz die Funktionsweise erklärt, alle<br />

übergebenen Argumente vorstellt, den<br />

Rückgabewert nennt und schließlich<br />

noch beschreibt, welche globalen Variablen<br />

die Funktion verändert. Google<br />

empfiehlt den Aufbau aus Listing 7.<br />

Geraten Sie dabei in Versuchung, einen<br />

kleinen Roman zu schreiben, handelt<br />

es sich wahrscheinlich um eine extrem<br />

komplexe Funktion. Sie sollten<br />

dann darüber nachdenken, sie in mehrere<br />

kleinere Funktionen aufzuspalten.<br />

Abschließend sollten Sie noch jedem<br />

wichtigen und sich nicht selbsterklärendem<br />

Block im Code einen Kommentar<br />

voranstellen. Heiße Kandidaten sind hier<br />

Schleifen und If-Abfragen. Kommentieren<br />

Sie jedoch nicht zu detailliert, also<br />

nicht jede Zeile. Einige Styleguides raten<br />

Listing 7<br />

3 Zeilen mit mehr als 80 Zeichen bricht das Terminal um. Manche Editoren (wie hier<br />

Nano im Hintergrund) schneiden die Zeile einfach am rechten Rand ab.<br />

################################<br />

# Schieße einen Screenshot<br />

# Globals:<br />

# SPEICHERORT<br />

# DATEINAME<br />

# Arguments:<br />

# None<br />

# Returns:<br />

# None<br />

################################<br />

screenshot() {<br />

...<br />

}<br />

28 www.linux-user.de<br />

03.2014


Guter Skript-Stil<br />

Schwerpunkt<br />

dazu, Kommentare nicht hinter eine Zeile<br />

zu stellen, sondern sie in eine eigene<br />

Zeile zu ziehen:<br />

ANZAHL=100 # Falsch<br />

# Richtig<br />

ANZAHL=100<br />

Grundsätzlich sollten die Kommentare<br />

nicht den Code wiederholen, sondern<br />

seinen Zweck erläutern. Anstelle von:<br />

für 1 bis 100 rufe image auf und<br />

warte dann 3 Sekunden verwenden Sie<br />

besser: schießt alle 3 Sekunden einen<br />

Screenshot. Einen guten Kommentar<br />

zu finden, ist genauso schwierig, wie<br />

Variablen passende Namen zu geben.<br />

Sofern Sie den Programmcode nur<br />

schnell hingeschrieben haben, Sie ihn<br />

aber später noch einmal überarbeiten<br />

möchten, er nur vorübergehend im<br />

Skript steht und Sie der Meinung sind,<br />

dass er ganz gut, aber nicht perfekt ist,<br />

stellen Sie ihm einen Kommentar voran:<br />

# TODO (tim@example.com)<br />

# Pseudozufallszahl berechnen<br />

In den Klammern notieren Sie die Kontaktperson,<br />

idealerweise in Form einer<br />

Listing 8<br />

#!/bin/bash<br />

#<br />

# Schießt regelmäßig einen<br />

Screenshot<br />

ANZAHL_BILDER=100<br />

WARTEZEIT_SEKUNDEN=3<br />

SPEICHERORT="."<br />

PRAEFIX_DATEINAME="shot"<br />

# Schieße alle x Sekunden einen<br />

Screenshot,<br />

# aber nicht mehr Screenshots als<br />

vorgegeben<br />

for i in $(seq 1 ${ANZAHL_<br />

BILDER}); do<br />

import ‐window root<br />

"${SPEICHERORT}/${PRAEFIX_<br />

DATEINAME}${i}.png";<br />

sleep ${WARTEZEIT_SEKUNDEN}<br />

done;<br />

exit<br />

E-Mail-Adresse. Wer immer das Skript<br />

später sieht, ist auf diesem Weg in der<br />

Lage, Sie zu kontaktieren. Einige Editoren<br />

heben zudem alle mit # TODO beginnenden<br />

Zeilen optisch hervor. Neben<br />

TODO empfehlen einige Styleguides noch<br />

FIXME für fehlerhafte Stellen und XXX für<br />

extrem gruselige und schnellstmöglich<br />

zu löschende Code-Teile.<br />

Startrampe<br />

Vergessen Sie nicht, dem fertiggestellten<br />

Skript anschließend noch die zum Ausführen<br />

notwendigen Rechte zu erteilen:<br />

$ chmod +x Skript.sh<br />

Google rät dazu, die Endung .sh wegzulassen.<br />

Alle eingebundenen Skript-Dateien<br />

sollten dagegen nicht mit den Bits<br />

zum Ausführen versehen sein und die<br />

Endung .sh erhalten. Den Dateinamen<br />

schreiben Sie grundsätzlich klein. Setzt<br />

es sich aus mehreren Wörtern zusammen,<br />

trennen Sie diese Teile mit einem<br />

Unterstrich statt mit einem Bindestrich.<br />

Korrekt wäre demnach mache_screenshots.<br />

Gewähren Sie dem Skript keinesfalls<br />

per SUID oder SGID Sonderrechte:<br />

Die Gefahr von Sicherheitslücken und<br />

Missbrauchs ist hier zu hoch.<br />

Das Skript sollte seinem Benutzer bei<br />

seiner Beendigung Auskunft darüber geben,<br />

ob es erfolgreich durchgelaufen ist<br />

oder die Arbeit abbrechen musste. In<br />

letzterem Fall muss es eine aussagekräftige<br />

Nachricht auf dem Fehlerkanal<br />

STDERR ausspucken. Diese Vorgehensweise<br />

erlaubt es, später alle Meldungen<br />

gezielt umzuleiten. Beenden Sie das<br />

Skript bei einem Fehler mit exit 1, andernfalls<br />

mit exit 0. Auf diese Weise integriert<br />

sich das Skript wesentlich einfacher<br />

in andere Projekte.<br />

Listing 8 zeigt das kryptische Skript<br />

aus Listing 1 in der überarbeiteten Fassung.<br />

Es ist allerdings immer noch nicht<br />

perfekt: So sollten Sie keine deutschen<br />

Kommentare und Variablennamen verwenden,<br />

sondern möglichst englische.<br />

Das vereinfacht nicht nur die Weitergabe,<br />

sondern hilft auch, wenn Sie in englischen<br />

Foren Fragen stellen. Helfer haben<br />

dann die Möglichkeit, den Code wesentlich<br />

schneller zu analysieren.<br />

Übrigens reduzieren Sie den Code aus<br />

Listing 8 mit einer aktuellen Version von<br />

ImageMagick auf eine Zeile:<br />

$ import ‐window root ‐snaps 100 U<br />

‐pause 3 shot.png<br />

Wie Sie daran sehen, erspart der Blick in<br />

eine Dokumentation beziehungsweise<br />

Manpage oft das Erstellen eines Skripts.<br />

Fazit<br />

Haben Sie sich einmal an die Regeln gewöhnt,<br />

schreiben Sie in Zukunft wesentlich<br />

übersichtlichere Bash-<strong>Skripte</strong>, deren<br />

Arbeitsweise Sie auch nach geraumer<br />

Zeit noch verstehen. Da viele andere<br />

Programmierer den beschriebenen _<br />

Guides befolgen, lesen Sie sich wesentlich<br />

schneller in deren <strong>Skripte</strong> ein. Bei<br />

Teamwork sollten Sie sich unbedingt auf<br />

einen Standard einigen.<br />

Ganz nebenbei reduziert das konsequente<br />

Befolgen von vereinbarten Regeln<br />

Fehler. An welchem Standard Sie<br />

sich letztendlich orientieren, bleibt Ihnen<br />

überlassen. Wichtig ist nur, bei den<br />

Regeln zu bleiben. (agr) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31427<br />

03.2014 www.linux-user.de<br />

29


Schwerpunkt<br />

Dialog<br />

Menüs und Masken in der Shell nutzen mit Dialog<br />

Mehr Komfort<br />

© Malalena, sxc.hu<br />

Von einfachen Abfragen bis<br />

hin zu komplexen Menüs:<br />

Mit dem Toolkit Dialog bauen<br />

Sie eine grafische Oberfläche<br />

für Shell-<strong>Skripte</strong>, die oft nicht<br />

mehr als eine zusätzliche<br />

Zeile braucht. Harald Zisler<br />

Eigentlich handelt es sich bei der Shell<br />

ja schon um eine Benutzerschnittstelle –<br />

aber kaum ein Nutzer fragt Daten noch<br />

auf Zeilenbasis ab. Um den Gewohnheiten<br />

der modernen Anwender Rechnung<br />

zu tragen, gibt es mit Dialog ein textbasiertes<br />

GUI-Toolkit, das die Elemente einer<br />

grafischen Oberfläche nachbildet.<br />

Die Optik wirkt etwas antiquiert, aber<br />

in Sachen Schnelligkeit ist die Technik<br />

kaum zu übertreffen. Läuft auf dem System<br />

ein X-Server, verschaffen Sie Ihren<br />

Nutzern noch etwas mehr Komfort,<br />

wenn Sie auf grafische Dialog-Pendants<br />

wie Zenity oder Gtkdialog setzen (siehe<br />

Kasten Verwandte).<br />

Masken und Menüs<br />

Möchten Sie Daten vom Benutzer abfragen,<br />

bietet sich bei einfachen Zeichenketten<br />

der in die Bash eingebaute Befehl<br />

read an, der oft in Kombination mit dem<br />

Kommando echo zum Einsatz kommt.<br />

Möchten Sie den Prompt für die Eingabe<br />

abändern, geben Sie über die Option ‐p<br />

einen neuen Text vor (Listing 1).<br />

Über die Option ‐n (Zeile 4) verhindern<br />

Sie das Newline am Ende der Echo-<br />

Anweisung. Daher erscheint der Text direkt<br />

rechts vom Read-Prompt. Anführungszeichen<br />

in der Ausgabe maskieren<br />

Sie mittels eines Rückstrichs („Back-<br />

Readme<br />

Für die Shell gibt es vorgefertigte Bausteine,<br />

die es erlauben, eine einfache Oberfläche<br />

mit Textfeldern, Listen und Auswahl in wenigen<br />

Zeilen zu programmieren. Damit ermöglichen<br />

Sie Anwendern ein komfortables<br />

Interface zu Ihrem Skript.<br />

Verwandte<br />

Neben dem hier gezeigten Dialog existieren<br />

weitere Projekte mit gleichem Zweck.<br />

In der Tabelle Alternativen finden Sie<br />

heraus, in welchem Umfang die anderen<br />

Kandidaten die Fenstertypen anbieten. Einige<br />

der Alternativen benötigen eine grafische<br />

Benutzeroberfläche: Dazu gehören<br />

Xdialog û, Zenity û, Kdialog û und Gtkdialog<br />

û. Letzteres weicht vom üblichen<br />

Muster ab: Hier erstellen Sie XML-Dateien<br />

mit den Anweisungen, die das Programm<br />

beim Aufruf einliest.<br />

30 www.linux-user.de<br />

03.2014


Dialog<br />

Schwerpunkt<br />

blenwert. In Listing 3 erhielten Sie also<br />

eine fünfzeilige Ausgabe, stünden im<br />

String der Variablen c Leerzeichen anstelle<br />

der Bindestriche.<br />

Beim Aufbau von Menüs gehen Sie<br />

wie in Listing 4 vor. Besteht die Auswahlliste<br />

nur aus wenigen Punkten, verwenslash“),<br />

damit diese keinen Einfluss auf<br />

das Ergebnis haben. Die beiden Methoden<br />

aus Zeile 4 und Zeile 7 erzeugen das<br />

gleiche Ergebnis.<br />

Mit der Option ‐i Text in Kombination<br />

mit ‐e (Readline-Support) geben Sie<br />

dem Benutzer schon eine Eingabe am<br />

Prompt vor. Etwas komfortabler klappt<br />

das mit dem externen Programm Readpreprompt<br />

û. Für den korrekten Einsatz<br />

führen Sie das Kommando in einer Subshell<br />

aus (Listing 2, Zeile 3). Das Tool liefert<br />

das Ergebnis der Abfrage auf die<br />

Standardausgabe. Mit diesem Befehl gestalten<br />

Sie leicht Masken für Datenbankanwendungen.<br />

Mit Format<br />

Der eingebaute Befehl echo bietet nur<br />

wenig Einfluss auf das Format der Ausgabe.<br />

Um Zahlenwerte exakt positioniert<br />

auf den Bildschirm zu schreiben,<br />

hilft Ihnen das der Programmiersprache<br />

C entliehene printf. Bei der Ausgabe<br />

von Zahlenwerten mit Nachkommastellen<br />

nimmt Ihnen der Befehl das Aufoder<br />

Abrunden ab, zudem berücksichtigt<br />

er die Spracheinstellungen der Shell.<br />

Der grundsätzliche Aufbau von Printf-<br />

Kommandos folgt dem Aufbau printf<br />

"%Format" Daten. Die wichtigsten Anweisungen<br />

zum Formatieren finden Sie<br />

in der Tabelle Mit Format. Der Befehl unterscheidet<br />

zwischen Komma und Punkt<br />

als Dezimaltrenner. Im Ernstfall passen<br />

Sie die Variable LC_NUMERIC oder LANG<br />

mittels set und unset innerhalb des<br />

Skripts an.<br />

Einfacher bringen Sie jedoch mittels<br />

tr die Eingabedaten gleich auf das richtige<br />

Format. Dies integrieren Sie bei Bedarf<br />

direkt in die Anweisung (Listing 3,<br />

Beispiel 2). Die Anweisungen für Printf<br />

schließen Sie immer mit einem Newline<br />

(\n) ab. In einigen Fällen erlaubt der Befehl<br />

auch Tabulatoren. Die Beispiele in<br />

Listing 3 zeigen die wichtigsten Funktionen,<br />

Abbildung 1 die Ergebnisse.<br />

Beachten Sie eine Besonderheit bei<br />

der Ausgabe von Zeichenketten<br />

(Strings): Das Leerzeichen dient normalerweise<br />

als Trenner. Das macht jedes<br />

Wort einer Zeile zu einem eigenen Varia-<br />

1 Mittels printf formatieren Sie die<br />

Ausgaben in der gewünschten Form.<br />

Listing 1<br />

01 #! /bin/sh<br />

02 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

03 echo "echo ‐n \"Eingabe: \";read a"<br />

04 echo ‐n "Eingabe: ";read a<br />

05 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

06 echo "read ‐p \"Eingabe: \" a"<br />

07 read ‐p "Eingabe: " a<br />

08 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

Alternativen<br />

Dialog-Befehl Xdialog Zenity Kdialog<br />

‐‐yesno ‐‐yesno ‐‐question ‐‐yesno<br />

‐‐msgbox ‐‐msgbox ‐‐warning oder<br />

‐‐msgbox<br />

‐‐info<br />

‐‐infobox ‐‐infobox – ‐‐passivepopup<br />

‐‐textbox ‐‐textbox ‐‐textinfo ‐‐textbox<br />

‐‐tailbox ‐‐tailbox – –<br />

‐‐pause – – –<br />

‐‐gauge ‐‐gauge ‐‐progress ‐‐progressbar<br />

‐‐form – – –<br />

‐‐inputmenu<br />

‐‐2inputsbox/<br />

– –<br />

‐‐3inputsbox<br />

‐‐calendar ‐‐calendar ‐‐calendar ‐‐calendar<br />

‐‐timebox ‐‐timebox – –<br />

2 Ein einfaches Menü, das Sie über die<br />

vorangestellten Ziffern steuern.<br />

Listing 2<br />

‐‐inputbox ‐‐inputbox ‐‐entry ‐‐inputbox<br />

‐‐editbox ‐‐editbox ‐‐textinfo ‐‐textinputbox<br />

‐‐dselect ‐‐dselect ‐‐file‐selection ‐‐getexistingdirectory<br />

‐‐fselect ‐‐fselect ‐‐file‐selection ‐‐getopenfilename/<br />

‐‐getsavefilename<br />

‐‐checklist ‐‐checklist ‐‐list ‐‐checklist<br />

‐‐radiolist ‐‐radiolist ‐‐list ‐‐radiolist<br />

‐‐menu ‐‐menubox ‐‐ list ‐‐menu<br />

#! /bin/sh<br />

a="Alter Wert"<br />

a=$(readpreprompt "Eingabe: "<br />

"$a")<br />

echo $a<br />

03.2014 www.linux-user.de<br />

31


Schwerpunkt<br />

Dialog<br />

den Sie Ziffern zu deren Kennzeichnung.<br />

Damit steuern Sie das Skript komfortabel<br />

über den Ziffernblock. Gehen Ihnen<br />

die Zahlen aus, verwenden Sie stattdessen<br />

Kleinbuchstaben. Bei den Test-Anweisungen<br />

behandelt das Skript die<br />

Funktionsvariable als String: Das vermeidet<br />

verwirrende Meldungen bei der Eingabe<br />

von unpassenden Zeichen. Abbildung<br />

2 zeigt das Beispiel in Aktion.<br />

Das Beispiel aus Listing 5 3 zeigt<br />

eine Maske zum Bearbeiten von Daten<br />

für eine Adressverwaltung. Für den praktischen<br />

Einsatz wären noch die Funktionen<br />

zum Holen und Sichern der Daten in<br />

einer Datenbank notwendig.<br />

Falls Sie PostgreSQL den Shell-Client<br />

psql nutzen, löschen Sie das bei der Datenabholung<br />

und Variablenbelegung<br />

enthaltene führende Leerzeichen. Mittels<br />

cut weisen Sie den Wert erst ab dem<br />

zweiten Byte der Variablen zu:<br />

b=$(psql ‐t ‐c "select name from U<br />

adressen where orgnr = 1;" | cut U<br />

‐b 2‐)<br />

Im Beispiel sprechen Sie die Datenzeilen<br />

mit Nummern und die Funktionen mit<br />

Buchstaben an. Nach jeder Änderung<br />

baut das Skript den Bildschirm neu auf.<br />

Mit Dialog<br />

Das Programm Dialog û liegt vielen aktuellen<br />

Distributionen bei. Die Anweisungen<br />

setzen sich aus Befehlen zum<br />

Gestalten der Fenster, für den Typ und<br />

Listing 3<br />

#! /bin/bash<br />

# Beispielwerte<br />

a=987,455<br />

b=987.455<br />

c="Das‐ist‐ein‐langes‐Wort"<br />

d=30<br />

# Beispiel 1<br />

# Ausgabe Fließkommazahl, Rundung auf 2 Stellen<br />

printf "%5.2f\n" $b<br />

# Beispiel 2<br />

# Ausgabe Fließkommazahl mit "falschem" Dezimaltrenner<br />

printf "%5.2f\n" `echo $a | tr , . `<br />

# Beispiel 3<br />

# Textausgabe auf zehn Zeichen gekürzt<br />

printf "%.10s\n" $c<br />

# Beispiel 4<br />

# Numerische Umwandlungen bei Darstellung:<br />

# Ganzzahl, Hexadezimalzahl, Oktalzahl<br />

printf "%i %X %o\n" $d $d $d<br />

# Beispiel 5<br />

# Numerische Ausgabe Ganzzahl,<br />

# Hexadezimalzahl (Kleinbuchstaben) mit führenden "0x"<br />

printf "%i %#x\n " $d $d<br />

Mit Format<br />

Beispiel<br />

%5.2f<br />

%.10s<br />

%X\n<br />

%x\n<br />

%#X\n<br />

%i\n<br />

Listing 4<br />

Erläuterung<br />

Fließkommazahl mit fünf Stellen vor und zwei<br />

nach dem Trenner<br />

Zeichenkette mit maximal zehn Zeichen Breite<br />

Hexadezimalzahl mit Großbuchstaben<br />

Hexadezimalzahl mit Kleinbuchstaben<br />

Hexadezimalzahl mit Großbuchstaben und führendem<br />

0X<br />

Ganzzahl (Integer)<br />

#! /bin/sh<br />

while true; do<br />

clear<br />

echo "(1) Funktion A"<br />

echo "(2) Funktion B"<br />

echo "(9) Ende"<br />

echo " "<br />

echo ‐n "Funktion auswählen: "; read f<br />

if [ "$f" = "1" ]; then<br />

echo "FUNKTION A";sleep 3<br />

elif [ "$f" = "2" ]; then<br />

echo "Funktion B";sleep 3<br />

elif [ "$f" = "9" ]; then<br />

exit<br />

fi<br />

done<br />

32<br />

www.linux-user.de<br />

03.2014


Dialog<br />

Schwerpunkt<br />

aus geometrischen Anweisungen zusammen.<br />

Am Anfang der Anweisung<br />

zum Gestalten geben Sie den Titel und<br />

einen Hintergrundtitel an. Ferner erwarten<br />

die Befehl am Ende zwingend Angaben<br />

zur Geometrie.<br />

Die Zeiten des Kästchenzählens sind<br />

aber dank Dialog vorbei: Wollen Sie keine<br />

Angaben für Höhe (Zeilen) und Breite<br />

(Zeichen) machen, geben Sie einfach 0<br />

0 an. Das klappt bei den meisten Anweisungen.<br />

Das Tool passt die Proportionen<br />

dann automatisch an. Listing 6 zeigt den<br />

Aufbau des Befehls.<br />

In den Anweisungen zum Fenstertyp<br />

geben Sie an, was in dieser Codezeile<br />

passiert. Möchten Sie, dass der Benutzer<br />

etwas liest, eingibt oder entscheidet?<br />

Auf der folgenden Doppelseite finden<br />

Sie eine Auswahl an Möglichkeiten.<br />

Während die Ja/​Nein-Frage und die<br />

Nachrichtenbox stets auf eine Eingabe<br />

warten, dient die Infobox zur reinen Ausgabe.<br />

Im Zusammenhang mit sleep zeigen<br />

Sie so Nachrichten für eine bestimmte<br />

Zeit an. Anstelle von sleep ließen<br />

sich natürlich andere Programme<br />

einbinden.<br />

Sie haben die Möglichkeit, die Ja/​<br />

Nein-Frage um je eine Schaltfläche zu<br />

erweitern. Eine Schaltfläche mit eigener<br />

Beschriftung erhalten Sie mit folgenden<br />

zusätzlichen Parametern:<br />

‐‐extra‐button ‐‐extra‐label "Text"<br />

Beim Betätigen erhalten Sie den Rückgabewert<br />

3. Die zweite Erweiterungsmöglichkeit<br />

besteht mit der Hilfe-Fläche<br />

‐‐help‐button. Sie benötigen hier keine<br />

weiteren Angaben zur Beschriftung, der<br />

Rückgabewert beträgt 2. Zusammen mit<br />

Ja (0) und Nein (1) erzeugt das Widget<br />

also vier Rückgabewerte.<br />

Das kleine Skript aus Listing 7 zeigt<br />

die Wirkungsweise. Sie sehen darin, wie<br />

Sie eine Schaltfläche abweichend be-<br />

Listing 6<br />

$ dialog ‐‐title "Titel"<br />

‐‐backtitle "Hintergrundtitel"<br />

Weitere Anweisungen 0 0<br />

Listing 5<br />

#! /bin/sh<br />

# Belegung Beispieldaten<br />

# An diese Stelle würde ein Datenbankzugriff integriert<br />

a="Herr"<br />

b="Pano Garçon"<br />

c="Testsystem 123"<br />

d="90003 Nürnberg"<br />

while true; do<br />

clear<br />

echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

echo " Adressbearbeitung"<br />

echo "‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

echo "F‐Nr. | | Wert"<br />

echo " 1 | Anrede: | "$a<br />

echo " 2 | Name: | "$b<br />

echo " 3 | Straße: | "$c<br />

echo " 4 | PLZ/Ort: | "$d<br />

echo "‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

echo "Aktionen: [F‐Nr]: Zeile ändern, [s] speichern,"<br />

echo "[q] Abbruch"<br />

echo ‐n "Aktion: ";read wn<br />

if [ "$wn" = "1" ]; then<br />

a=$(readpreprompt "Zeile $wn: " "$a")<br />

elif [ "$wn" = "2" ]; then<br />

b=$(readpreprompt "Zeile $wn: " "$b")<br />

elif [ "$wn" = "3" ]; then<br />

c=$(readpreprompt "Zeile $wn: " "$c")<br />

elif [ "$wn" = "4" ]; then<br />

d=$(readpreprompt "Zeile $wn: " "$d")<br />

elif [ "$wn" = "s" ]; then<br />

echo "Hier würde in die Datenbank geschrieben werden"<br />

break<br />

elif [ "$wn" = "q" ]; then<br />

exit<br />

fi<br />

done<br />

echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />

echo $a<br />

echo $b<br />

echo $c<br />

echo $d<br />

3 Mit ein paar<br />

Zeilen Code haben<br />

Sie eine einfache<br />

Maske<br />

zum Bearbeiten<br />

von Datensätzen<br />

aus einer<br />

Datenbank erstellt.<br />

03.2014 www.linux-user.de<br />

33


Schwerpunkt<br />

Dialog<br />

Fenstertypen in Dialog<br />

Das Programm Dialog bringt eine Reihe fertiger Elemente<br />

mit, die das Programmieren von Abfragen in<br />

Shell-Skipten stark vereinfachen. Die Übersicht auf dieser<br />

Doppelseite eignet sich gut, um sie beim Schreiben<br />

eines Skripts neben die Tastatur zu legen. Sie sehen jeweils,<br />

welche Parameter Sie für den Aufruf des Elements<br />

brauchen, wie der konkrete Aufruf lautet und<br />

welchen Rückgabewert Sie erwarten dürfen.<br />

Haben Sie die Media-Edition erworben, finden Sie diese<br />

Doppelseite auf als PDF auf dem beiligenden Datenträger<br />

im Ordner LU/dialog. Nutzen Sie die Einstellungen<br />

Ihres Druckers, passt sie quer auf eine A4-Seite.<br />

Den Hintergund für die hier abgebildeten Dialoge<br />

setzt ein separater Parameter. Dessen Einsatz ist im<br />

Artikel erläutert. Aus Platzgründen haben wir ihn hier<br />

nicht bei jedem Aufruf mit angegeben.<br />

Ja/​Nein-Frage<br />

‐‐yesno "Text"<br />

Ja: 0, Nein: 1<br />

Nachrichtenbox<br />

‐‐msgbox "Text"<br />

OK: 0, Abbruch: 1<br />

Infobox<br />

‐‐infobox "Text"<br />

0<br />

Textbox<br />

‐‐textbox Dateiname Höhe Breite<br />

Verlassen: 0, Abbruch: 1<br />

Ende einer Datei anzeigen<br />

‐‐tailbox Dateiname Höhe Breite<br />

Verlassen: 0, Abbruch: 1<br />

Pause<br />

‐‐pause "Text" Höhe Breite Sekunden<br />

Abgelaufen: 0, Abbuch: 1<br />

34 www.linux-user.de<br />

03.2014


Dialog<br />

Schwerpunkt<br />

Fortschrittsanzeige<br />

‐‐gauge "Text" 0 0<br />

0<br />

Eingabemenü<br />

‐‐inputmenu "Text" Höhe Breite Menühöhe "Menüpunkt1"<br />

"Wert1" ...<br />

Daten auf die Standardausgabe<br />

Kalender<br />

‐‐calendar "Text" 0 0<br />

Datum<br />

Zeitwerte erfassen<br />

‐‐timebox "TEXT" 0 0<br />

Zeitangabe<br />

Eingabebox<br />

‐‐inputbox "Text" 0 0 "Vorgabe<br />

alphanumerische Werte<br />

Mini-Editor<br />

‐‐editbox Eingabedatei Höhe Breite > Ausgabedatei<br />

Textdatei<br />

Verzeichnis auswählen<br />

‐‐dselect Verzeichnis 0 0<br />

Verzeichnisname<br />

Datei auswählen<br />

‐‐fselect Verzeichnis Höhe Breite<br />

Dateiname mit Pfad<br />

03.2014<br />

www.linux-user.de<br />

35


Schwerpunkt<br />

Dialog<br />

4 Mit einem Blick sehen Sie, wie voll die Home-Partition gerade ist.<br />

Listing 7<br />

schriften oder belegen. Der Befehl im<br />

ersten Aufruf ist entsprechend ergänzt.<br />

Sie finden vor dem Parameter ‐‐yesno<br />

den zusätzlichen Parameter ‐‐ok‐label<br />

"Text". Gleiches gilt analog für die Nein-<br />

Schaltfläche (‐‐no‐label "Text"), die<br />

Ja-Schaltfläche (‐‐yes‐label "Text")<br />

#! /bin/sh<br />

while true; do<br />

dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐help‐button<br />

‐‐extra‐button ‐‐extra‐label "EXTRA" ‐‐ok‐label "Zustimmung" ‐‐yesno<br />

"FRAGETEXT" 0 0<br />

dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐msgbox<br />

"Rückgabewert: $?" 0 0<br />

dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐defaultno<br />

‐‐yesno "Shellskript beenden?" 0 0<br />

if [ $? ‐eq 0 ]; then<br />

exit<br />

fi<br />

done<br />

Listing 8<br />

#! /bin/sh<br />

prozent=0<br />

while [ $prozent ‐lt 100 ]; do<br />

# Erzeugen der Prozent‐Angabe<br />

prozent=$(echo "$prozent + 10" | bc)<br />

# Der Wert für gauge wird über die Pipe an dialog übergeben<br />

echo $prozent | dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel"<br />

‐‐gauge "FORTSCHRITTSTEXT" 0 0<br />

# sleep nur für Demo!<br />

sleep 1<br />

done<br />

und die Hilfe (‐‐help‐label "Text").<br />

Mit dem vorangestellten ‐‐defaultno in<br />

der letzten dialog-Anweisung steht die<br />

Auswahl nach dem Start auf No.<br />

Bei der Fortschrittsanzeige übermitteln<br />

Sie den Prozentwert per Pipe auf<br />

das Dialog-Kommando (Listing 8). Das<br />

Element eignet sich ebenfalls zur Anzeige<br />

von Anteilen an einem Gesamtwert.<br />

Listing 9 ist „gebrauchsfertig“: Es zeigt<br />

die Belegung der Platte durch das Verzeichnis<br />

/home an 4 . Unübersichtlich<br />

gestaltet sich hier das Herauslösen der<br />

Werte aus der df-Abfrage. Der Prozentwert<br />

erscheint als Balken, der noch freie<br />

Speicherplatz im Klartext.<br />

Formulare<br />

Benötigen Sie nicht nur einfache Formulare,<br />

sondern eine komplexe Eingabemaske,<br />

so bietet Dialog auch dafür die<br />

passenden Elemente. Sie bewegen sich<br />

darin mit den Tabulator- und Pfeiltasten.<br />

Anfangs erscheint die Syntax unübersichtlich:<br />

Es gilt, viel mit Positions- und<br />

Größenangaben zu hantieren.<br />

Listing 10 zeigt ein kleines Skript, welches<br />

das Editieren von Daten erlaubt<br />

und wie diese wieder zurück in Variablen<br />

ablegt, um diese dauerhaft zurückzuschreiben.<br />

Abbildung 5 zeigt, wie sich<br />

welche Positions- und Größenangabe<br />

des Befehls in der Maske auswirkt.<br />

Damit das Umleiten der Ausgabe in<br />

eine Datei klappt, setzen Sie vor ‐‐form<br />

zwingend die zusätzliche Anweisung<br />

‐‐stdout ein. In der Nachrichtenbox<br />

(msgbox) verwenden Sie das Zeichen für<br />

ein Newline (\n), um den Wert jeder Variablen<br />

in einer neuen Zeile auszugeben.<br />

Formulare mit der Funktion inputmenu<br />

benötigen weniger Größen- und Positionsparameter,<br />

jedoch erhalten Sie am<br />

Ende nicht die Daten sämtlicher Felder.<br />

Je Dialog-Aufruf besteht außerdem nur<br />

die Möglichkeit, ein einzelnes Feld aus<br />

dem Dialog zu ändern.<br />

Die Ausgabe umfasst die Aktion<br />

(RENAMED), den Feldbezeichner und die<br />

Daten. Damit die Ausgabe funktioniert,<br />

müssen Sie wie zuvor bei ‐‐inputmenu<br />

die Option ‐‐stdout setzen. Das Nachbearbeiten<br />

erfolgt mit cut (Listing 11).<br />

36 www.linux-user.de<br />

03.2014


Dialog<br />

Schwerpunkt<br />

Wichtig ist, dass Sie als Feldbezeichner<br />

ein zusammenhängendes Wort ohne<br />

Leerzeichen verwenden. Bei Datenbanken<br />

bietet sich dazu der entsprechende<br />

Feldname an. Auf diese Weise fällt es<br />

leicht, eine SQL-Anweisung mit den passenden<br />

Variablen zu versehen.<br />

Eine komfortable Möglichkeit zur Eingabe<br />

eines Datums bietet die Funktion<br />

‐‐calendar. Beim Aufruf sehen Sie den<br />

aktuellen Monat, in der linken Spalte die<br />

Kalenderwoche. Mit den Cursor- und<br />

Bild-auf/​ab-Tasten wechseln Sie zu einem<br />

anderen Datum. Mit dem Betätigen<br />

der Schaltfläche OK gibt das Widget den<br />

vorher markierten Wert aus.<br />

Um eine Variable zu belegen, lenken<br />

Sie wieder über ‐‐stdout die Ausgabe<br />

um. Weil Dialog die Teile des Datums mit<br />

einem Schrägstrich unterteilt, ersetzen<br />

Sie mittels tr diese durch den hierzulande<br />

üblichen Punkt. Das Listing 12 zeigt,<br />

wie ein entsprechendes Skript aufgebaut<br />

ist. Ein Bild dazu finden Sie in der<br />

Übersicht über die Fenstertypen<br />

Zeitwerte erfassen Sie mittels ‐‐timebox.<br />

Um den Eingabewert zu übernehmen,<br />

schalten Sie wieder ‐‐stdout vor.<br />

Das Fenster zeigt die Zeit des Aufrufs an.<br />

Wollen Sie abweichende Werte eingeben,<br />

springen Sie mit den Pfeiltasten in<br />

die Eingabefelder und geben andere<br />

Daten ein.<br />

Beliebige alphanumerische Werte erfassen<br />

Sie in einer Eingabebox (‐‐inputbox).<br />

Das Belegen einer Variablen innerhalb<br />

eines Skripts geschieht mittels vorangestelltem<br />

‐‐stdout. Sie haben die<br />

Möglichkeit, eine Vorgabe zu übergeben.<br />

Der Vorgang passt in eine Zeile:<br />

a=$(dialog ‐‐title "Titel" ‐‐backU<br />

title "Hintergrundtitel" ‐‐stdoutU<br />

‐‐inputbox "EINGABEÜBERSCHRIFT" 0U<br />

0 "VORGABE")<br />

Kleinere Textdateien bearbeiten Sie bei<br />

Bedarf in einem Mini-Editor (‐‐editbox).<br />

Dabei übergeben Sie als Argument den<br />

Namen der Datei. Existiert diese nicht,<br />

legen Sie sie mit touch an. Den eingegebenen<br />

oder geänderten Text schreiben<br />

Sie in eine andere Datei zurück oder<br />

hängen ihn an diese an.<br />

Geben Sie Höhe und Breite an, damit<br />

das innere Fenster nicht die Überschrift<br />

verdrängt. Wiederum müssen Sie<br />

‐‐stdout vorschalten, damit Ihre Eingaben<br />

nicht auf der Fehlerausgabe landen.<br />

Sie benötigen nur eine einzige Zeile:<br />

dialog ‐‐title "Titel" ‐‐backtitlU<br />

e "Hintergrundtitel" ‐‐stdout ‐‐oU<br />

k‐label "Speichern" ‐‐editbox texU<br />

t.txt 20 75 > neu.txt<br />

Listing 9<br />

#! /bin/sh<br />

# Prozentuale Belegung aus df ‐h übergeben<br />

PROZENT=$(df ‐h | grep "/home" | tr ‐s ' ' | cut ‐d' ' ‐f5 | cut ‐d%<br />

‐f1)<br />

FREI=$(df ‐h | grep "/home" | tr ‐s ' ' | cut ‐d' ' ‐f4)<br />

echo ${PROZENT} | dialog ‐‐title "Plattenbelegung von /home "<br />

‐‐backtitle "Systemauskunft" ‐‐gauge "\n Aktuell freier Plattenplatz:<br />

${FREI}B" 10 50<br />

sleep 5<br />

Listing 10<br />

#! /bin/sh<br />

a="Herr"<br />

b="Meier"<br />

c="Hans"<br />

dialog ‐‐title "Titel" ‐‐backtitle "Kundendaten" ‐‐ok‐label "Speichern"<br />

‐‐stdout ‐‐form "Kartei" 10 60 3 "Anrede " 1 1 "$a" 1 15 30 0 "Name "<br />

2 1 "$b" 2 15 30 0 "Vorname " 3 1 "$c" 3 15 30 0 > ausgabe.txt<br />

a=$(cat ausgabe.txt | head ‐1)<br />

b=$(cat ausgabe.txt | head ‐2 | tail ‐1)<br />

c=$(cat ausgabe.txt | head ‐3 | tail ‐1)<br />

rm ausgabe.txt<br />

dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐msgbox<br />

"Gespeicherte Werte: \n $a \n $b \n $c " 0 0<br />

Listing 11<br />

#! /bin/sh<br />

neuwert=$(dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel"<br />

‐‐stdout ‐‐inputmenu "MENÜÜBERSCHRIFT" 17 60 15 "Zeile‐1 >" "Wert 1"<br />

"Zeile‐2 >" "Wert 2" "Zeile‐3 >" "")<br />

spalte=$(echo $neuwert | cut ‐d \> ‐f 1 | cut ‐b 9‐)<br />

eintrag=$(echo $neuwert | cut ‐d \> ‐f 2 | cut ‐b 2‐)<br />

dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐msgbox<br />

"Gespeicherte Werte: \n $neuwert \n $spalte \n $eintrag " 0 0<br />

03.2014 www.linux-user.de<br />

37


Schwerpunkt<br />

Dialog<br />

5 Positions- und Größenangaben für die Elemente des Formulars.<br />

Listing 12<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 29273<br />

#! /bin/sh<br />

a=$(dialog ‐‐title "Titel"<br />

‐‐backtitle "Hintergrundtitel"<br />

‐‐stdout ‐‐calendar "TEXT" 0 0 |<br />

tr \/ .)<br />

dialog ‐‐title "Titel"<br />

‐‐backtitle "Hintergrundtitel"<br />

‐‐msgbox "gewähltes Datum: $a "<br />

0 0<br />

Listing 14<br />

Das Auswählen von Verzeichnis und<br />

Dateiname im Skript erledigen Sie mit<br />

‐‐dselect und ‐‐fselect. Meist kommen<br />

beide in Kombination zum Einsatz.<br />

Es empfiehlt sich, für unkundige Benutzer<br />

einen Hinweis zum Bedienkonzept<br />

Listing 13<br />

#!/bin/sh<br />

a=$(echo $HOME)<br />

while true do<br />

a=$(dialog ‐‐title "Titel"<br />

‐‐backtitle "Hintergrundtitel"<br />

‐‐stdout ‐‐fselect $a 0 0)<br />

dialog ‐‐title "Titel"<br />

‐‐backtitle "Hintergrundtitel"<br />

‐‐defaultno ‐‐yesno "$a<br />

Übernehmen" 0 0<br />

if [ $? ‐eq 0 ]; then<br />

break<br />

fi<br />

done<br />

#!/bin/sh<br />

a=$(dialog ‐‐title "Titel" ‐‐backtitle "Hintergrundtitel" ‐‐stdout<br />

‐‐checklist "AUSWAHLÜBERSCHRIFT" 10 40 3 MARKE‐1 "INFO‐1" on MARKE‐2<br />

"INFO‐2" off MARKE‐3 "INFO‐3" on)<br />

a=$(echo $a | tr ‐d \")<br />

anzubringen. Die Auswahl eines Verzeichnisses,<br />

das sich auf der gleichen<br />

Ebene befindet wie die Vorgabe, erfolgt<br />

zunächst über die Pfeiltasten sowie anschließendes<br />

Drücken der Leertaste.<br />

Mit ‐‐fselect wählen Sie im linken<br />

Fensterteil den Pfad, drücken zwei Mal<br />

die Leertaste, und erledigen in der rechten<br />

Hälfte die Auswahl der Datei. Zwischen<br />

den Bereichen wechseln Sie über<br />

den Tabulator, innerhalb des Bereiches<br />

navigieren Sie mit den Pfeiltasten.<br />

Das untere Feld erlaubt die manuelle<br />

Eingabe. Wenn sich der Cursor darin befindet,<br />

springen Sie mit dem Löschen<br />

der rechts stehenden Pfadangaben in<br />

die nächsthöhere Verzeichnishierarchie<br />

zurück 6 . Ein Beispiel für die Auswahl<br />

finden Sie in Listing 13.<br />

Eine Mehrfachauswahl bauen Sie mit<br />

‐‐checklist auf. Als Ergebnis erhalten<br />

Sie das oder die Kennzeichen (Marke)<br />

des jeweiligen Eintrags, welche in Anführungszeichen<br />

gefasst sind. Als Trenner<br />

fungiert das Leerzeichen. Jedem Eintrag<br />

geben Sie den Status mit: on steht<br />

hier für markiert, off für nicht markiert.<br />

Die Angaben für Höhe (Zeilen), Breite<br />

(Zeichen) und Auswahlhöhe (Zeilen) geben<br />

Sie vor. Der Wert für die Auswahlhöhe<br />

darf hierbei der Zahl der Möglichkeiten<br />

gleichen. Passt nicht alles ins Fenster,<br />

gibt es die Möglichkeit zu scrollen. Listing<br />

14 zeigt den Code mit tr, welches<br />

die Anführungszeichen entfernt.<br />

Für die Einfachauswahl verwenden Sie<br />

den Fenstertyp ‐‐radiolist, setzen nur<br />

bei einem einzigen Eintrag den Status<br />

on, und erhalten den Marker-Wert ohne<br />

die Anführungszeichen. Über die Leertaste<br />

wählen Sie den Wert aus:<br />

a=$(dialog ‐‐title "Titel" ‐‐backU<br />

title "Hintergrundtitel" ‐‐stdoutU<br />

‐‐radiolist "AUSWAHLÜBERSCHRIFT"U<br />

10 40 3 MARKE‐1 "INFO‐1" on MARKU<br />

E‐2 "INFO‐2" off MARKE‐3 "INFO‐3"U<br />

off)<br />

Auf diese Weise setzen Sie eine Datensatz-Auswahl<br />

für eine Bearbeitungsmaske<br />

um. Dabei erstellt das Skript die Auswahl<br />

dynamisch aus der Datenabfrage.<br />

Die Marke besteht aus der Datensatznummer<br />

oder dem eindeutigen Merk-<br />

38 www.linux-user.de<br />

03.2014


Dialog<br />

Schwerpunkt<br />

mal, mit dem das Skript den Datensatz<br />

anschließend aus einem entsprechenden<br />

Speicher für die Maske einliest.<br />

Das Beispiel in Listing 15 zeigt eine<br />

SQL-Abfrage mit dem Client Psql für die<br />

PostgreSQL-Datenbank. Ziel ist es, die<br />

Kundennummer orgnr an den weiteren<br />

Teil des Skripts zu übergeben. Die Anweisungen<br />

für das Menü mittels ‐‐radiolist<br />

schreibt das Skript in eine Variable<br />

und führt den Code mit eval aus. Für<br />

das weitere Gestalten eignen sich je<br />

nach Programmierstil die Fenstertypen<br />

‐‐form oder ‐‐inputmenu.<br />

Menüs zur Programmsteuerung gelingen<br />

mit dem Fenstertyp ‐‐menu. Er gibt<br />

eine Marke aus, die Sie anschließend<br />

auswerten. Wie bei fast allen anderen<br />

Wertübergaben schalten Sie auch hier<br />

‐‐stdout vor den Aufruf des Fenstertyps.<br />

Listing 16 zeigte ein Beispiel für die<br />

Implementation.<br />

Fazit<br />

Möchten Sie Ihre Shell-Skripts mit einer<br />

benutzerfreundlichen Oberfläche aufwerten,<br />

finden Sie alles Notwendige im<br />

Fundus von Dialog. Benötigen Sie nur<br />

einfache Abfrage, profitieren Sie sogar<br />

von den Vorteilen bereits vorgefertigter<br />

Bausteine. Andernfalls stellt sich vermutlich<br />

ohnehin die Frage nach einer Alternative<br />

zum Shell-Code. (agr) n<br />

Listing 15<br />

#!/bin/sh<br />

# Suchmaske für die Datenbankabfrage<br />

sube=$(dialog ‐‐title "Kundensuche" ‐‐backtitle<br />

"Kundendatenverwaltung" ‐‐stdout ‐‐inputbox<br />

"Kundenname eingeben" 0 0 "")<br />

# Prüfen, ob es zutreffende Daten gibt<br />

a=$(psql ‐t ‐c "select orgnr from kunden where name<br />

= '$sube';")<br />

if [ ‐z "$a" ]; then<br />

dialog ‐‐title "Kundensuche" ‐‐backtitle<br />

"Kundendatenverwaltung" ‐‐msgbox "Keine passenden<br />

Datensätze gefunden! " 0 0<br />

exit # oder break, wenn in Schleife!<br />

fi<br />

# Daten für die Einfachauswahl holen und Aufbau<br />

Auswahl<br />

#Zähler für den ersten "on"‐Status<br />

v=0<br />

teil1=$(echo "a=\`dialog ‐‐title \"Kundensuche\"<br />

‐‐backtitle \"Kundendatenverwaltung\" ‐‐stdout<br />

‐‐radiolist \"gefunden: \" 10 40 3 ")<br />

# Kundennummern ermitteln<br />

for i in $(psql ‐t ‐c "select orgnr from kunden<br />

where name = '$sube' order by name, vorname, gebdat<br />

;"); do<br />

if [ $v ‐eq 0 ]; then<br />

status="on"<br />

v=1<br />

else<br />

status="off"<br />

fi<br />

info=$(psql ‐t ‐c "select (name || ' ' || vorname<br />

|| ' ' || gebdat) from kunden where orgnr = $i;";)<br />

teil2=`echo $teil2 $i \"$info\" $status`<br />

done<br />

auswahlmaske=$(echo "$teil1 $teil2\`")<br />

echo $auswahlmaske<br />

eval $auswahlmaske<br />

dialog ‐‐title "Kundensuche" ‐‐backtitle<br />

"Kundendatenverwaltung" ‐‐msgbox "Datensatz Nr. $a<br />

ausgewählt " 0 0<br />

6 Entsprechende Widgets erleichtern die Auswahl von Verzeichnis<br />

und Datei.<br />

Listing 16<br />

#!/bin/sh<br />

while true; do<br />

a=`dialog ‐‐title "TITEL" ‐‐backtitle<br />

"HINTERGRUNDTITEL" ‐‐stdout ‐‐menu "MENÜÜBERSCHRIFT"<br />

0 0 0 1 "ERSTE" 2 "ZWEITE" 9 "ENDE"`<br />

if [ $a ‐eq 1 ]; then<br />

dialog ‐‐title "Titel" ‐‐backtitle<br />

"Hintergrundtitel" ‐‐msgbox "Erster Eintrag gewählt"<br />

0 0<br />

elif [ $a ‐eq 2 ]; then<br />

dialog ‐‐title "Titel" ‐‐backtitle<br />

"Hintergrundtitel" ‐‐msgbox "Zweiter Eintrag<br />

gewählt" 0 0<br />

elif [ $a ‐eq 9 ]; then<br />

dialog ‐‐title "Titel" ‐‐backtitle<br />

"Hintergrundtitel" ‐‐no‐label "Programmende"<br />

‐‐yes‐label "Weitermachen" ‐‐yesno "Programmende ?"<br />

0 0<br />

if [ $? ‐eq 1 ]; then<br />

break # oder exit<br />

fi<br />

fi<br />

done<br />

03.2014 www.linux-user.de<br />

39


Schwerpunkt<br />

SHC<br />

Der Shell Script Compiler<br />

wandelt <strong>Skripte</strong> in Binärprogramme<br />

um. Das schützt vor<br />

unbeabsichtigten Veränderungen,<br />

birgt aber auch einige<br />

Tücken.<br />

Karsten Günther<br />

© bekas007, 123RF<br />

Es gibt eine Reihe von Gründen, Programme<br />

aller Art zu kompilieren, also<br />

auch <strong>Skripte</strong>. An erster Stelle steht dabei<br />

ein Gewinn an Geschwindigkeit beim<br />

Ausführen. Weiterhin erzeugen Compiler<br />

im Idealfall kleine, portable Programme,<br />

die weitgehend unabhängig von demjenigen<br />

Rechner laufen, auf dem Sie sie erstellt<br />

haben. Weiterhin bietet sich diese<br />

Methode an, um die eingesetzten Algorithmen<br />

vor unbeabsichtigten Veränderungen<br />

zu schützen. Die beiden ersten<br />

Punkte – der Zuwachs an Geschwindigkeit<br />

und die Portabilität – stehen beim<br />

Readme<br />

Der Compiler SHC übersetzt Bash-<strong>Skripte</strong> in<br />

Binärprogramme, sodass sie nur schwer zu<br />

verändern und für Menschen unleserlich<br />

sind. Der Artikel zeigt, wie der Compiler<br />

funktioniert, und was Sie beim Einsatz<br />

beachten sollten.<br />

Mit SHC Bash-<strong>Skripte</strong> kompilieren<br />

Eingepackt<br />

Shell Script Compiler SHC û nicht im<br />

Fokus. So benötigen die mit dem SHC<br />

übersetzten Programme immer noch die<br />

Bash als Interpreter, und ein größeres<br />

Tempo stellt sich kaum ein. Dieser Punkt<br />

dürfte aber keine große Rolle spielen, da<br />

Shell-Skripts ohnehin nicht für zeitkritische<br />

Anwendungen taugen.<br />

Dafür schützt das Übersetzen in Binärcode<br />

den Quelltext vor den Ambitionen<br />

von Anwendern, etwas Gutes vielleicht<br />

doch noch ein wenig besser zu machen,<br />

um es dann vollkommen zu verhauen.<br />

Derzeit ist der SHC das bekannteste freie<br />

Werkzeug, um (Bash-)Shell-Skripts in<br />

ausführbare Programme zu übersetzen.<br />

Die Arbeitsweise des SHC weist aufgrund<br />

dieser Zielsetzung einige Besonderheiten<br />

auf. So erfolgt das Kompilieren<br />

in zwei Schritten: Zunächst erzeugt<br />

SHC aus dem Skript einen umfangreichen,<br />

sehr speziellen C-Quellcode, den<br />

er anschließend mit dem Compiler in ein<br />

binäres Programm übersetzt.<br />

Im ersten Schritt generiert SHC dafür<br />

eine Datei mit der Endung .x.c, die er<br />

dann mit dem in der Umgebungsvariablen<br />

$CC vereinbarten C-Compiler eine<br />

Datei mit der Endung .x übersetzt. Das<br />

Umsetzen des Skript-Quelltexts in C-<br />

Code basiert auf dem Einsatz eines Arrays,<br />

das den Inhalt des Skripts enthält.<br />

40 www.linux-user.de<br />

03.2014


SHC<br />

Schwerpunkt<br />

Beim Übersetzen greift SHC schrittweise<br />

auf die (verschlüsselten) Einträge des Arrays<br />

zu und bindet sie in das ausführbare<br />

Programm ein.<br />

Wie das Bearbeiten des Arrays und das<br />

Umsetzen in das binäre Programm im<br />

Detail erfolgt, finden Sie ausführlich in<br />

einem Blog im Web beschrieben û. Die<br />

Seite behandelt außerdem das Thema<br />

Sicherheit von Passwörtern in <strong>Skripte</strong>n.<br />

Zudem diskutiert der Autor auch die<br />

Möglichkeiten, mittels SHC erstellte Programme<br />

nachträglich wieder zu entschlüsseln.<br />

Praxis<br />

Für einen ersten Test bietet sich das klassische<br />

„Hello World“ an, das mit echo<br />

"Hello SHC" allerdings einen alternativen<br />

Text ausgibt. Lautet die erste Skript-<br />

Zeile nicht #! /bin/sh, dann bricht der<br />

Befehl shc ‐f hello.sh mit der Meldung<br />

shc: invalid first line in<br />

script:... ab. Mit dem Shebang klappt<br />

das Übersetzen, mit der Option ‐v auch<br />

kommentiert (Listing 3).<br />

Der dabei erzeugte Quelltext hello.<br />

sh.x.c fällt mit knapp 9 KByte vergleichsweise<br />

groß und auf den ersten<br />

Blick weitgehend unverständlich aus,<br />

beschäftigen sich doch die größten Teile<br />

mit der Verschlüsselung des Skripts.<br />

Das ausführbare Programm ist mit<br />

11 KByte auch nicht gerade klein und<br />

weist auf unterschiedlichen Plattformen<br />

einige Probleme auf: So laufen unter<br />

Arch Linux und Ubuntu generierte Programme<br />

auf Arch Linux nur dann, wenn<br />

Sie sie mit der Option ‐T erstellt haben.<br />

Eigentlich ermöglicht es diese Option,<br />

den Ablauf des Programms mit externen<br />

Diagnosewerkzeugen wie Strace zu beobachten.<br />

Unter Ubuntu dagegen laufen<br />

die auf beiden Systemen erzeugten<br />

Binaries problemlos.<br />

Shell-<strong>Skripte</strong> haben einige spezielle Eigenschaften,<br />

die der Compiler verstehen<br />

und umsetzen muss. So erlaubt es die<br />

Bash, dem Skript Argumente zu übergeben,<br />

die innerhalb des Skripts als Positionsparameter<br />

bereitstehen. Damit<br />

kommt SHC klar, selbst, wenn Sie über<br />

set die Parameter neu zuordnen.<br />

Zu den nächsten wichtigen Punkten<br />

gehört das Auswerten von Rückgabewerten<br />

(„Exit Codes“), die sowohl von internen<br />

als auch externen Befehlen stammen.<br />

Bei der Bash enthält die Variable $?<br />

diesen Wert für den letzten, im Vordergrund<br />

ausgeführten Befehl; Sie lesen ihn<br />

durch echo $? am Prompt aus. Der SHC<br />

unterstützt dies ebenfalls.<br />

Listing 1<br />

source=("http://www.datsi.fi.upm.es/~frosal/<br />

sources/${pkgname}‐${pkgver}.tgz")<br />

sha256sums=('\textbf{ef7bbf1252c9c791f711782870d00d6f19c42c08e0ee57e9a0<br />

4d0e2b3d114d40}')<br />

Listing 2<br />

...<br />

( Unsupported package: Potentially dangerous ! )<br />

==> Edit PKGBUILD ? [Y/n] ("A" to abort)<br />

==> ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

\textbf{Y}...<br />

SHC installieren<br />

Unter Ubuntu und dessen Varianten gestaltet sich die Installation<br />

des Shell Compilers verhältnismäßig einfach, da es hier PPAs mit<br />

mehr oder weniger aktuellen Versionen gibt.<br />

Unter Arch Linux gilt es, zwei Klippen zu umschiffen: Dort befindet<br />

sich das Paket in der aktuellen Version in den Arch User Repositories<br />

(AUR), allerdings mit einer falschen Prüfsumme in der Datei PKG‐<br />

BUILD (Listing 1). Die korrekte Checksumme berechnen Sie mit<br />

dem Tool sha256sums und fügen sie bei der entsprechenden Abfrage<br />

(Listing 2) ein. Das Skript öffnet einen Editor, um Ihnen die<br />

erforderliche Änderung zu gestatten.<br />

Weiterhin gehören zum SHC-Paket eine Reihe von Testskripten<br />

(pru.sh, test.bash), die das Paketmanagement bei Arch Linux<br />

voreingestellt nicht einrichtet, obwohl das Original-Archiv sie enthält.<br />

Diese dienen zum Überprüfen der korrekten Funktion des SHC. Sie<br />

sollten sie unbedingt vor dem Einsatz übersetzen.<br />

Alternativ erzeugen und installieren den SHC direkt aus den Quelltext.<br />

Nach dem Entpacken des Archivs genügt ein make zum Übersetzen;<br />

make install installiert das Programm unter /usr/local/.<br />

Das Target make test funktioniert in der Version 3.8.9 nicht<br />

mehr. Verwenden Sie stattdessen shc ‐f test.bash.<br />

03.2014 www.linux-user.de<br />

41


Schwerpunkt<br />

SHC<br />

Gerade in Shell-<strong>Skripte</strong>n kommen Rückgabewerte<br />

in Zusammenhang mit bedingten<br />

Verknüpfungen von Befehlen<br />

zum Einsatz. Die Bash bietet hier durch<br />

Kurzschlusstests („Short Circuit Tests“)<br />

sehr viel Komfort: Das doppelte Ampersand<br />

(&&) verbindet zwei Befehle, von<br />

denen die Shell den zweiten nur dann<br />

ausführt, wenn der erste ohne Fehler<br />

terminiert – also mit Rückgabewert 0.<br />

Alternativ nutzen Sie die doppelte<br />

Pipe (||) zum Verknüpfen. In diesem Fall<br />

führt die Shell den folgenden Befehl nur<br />

aus, wenn der zuvor stehende mit einem<br />

Fehler (Rückgabewert ungleich null) terminiert.<br />

Short Circuit Tests stehen in<br />

Kombination mit SHC bereit (Listing 4).<br />

Ein weiteres, manchmal heikles Thema<br />

stellen Ein- und Ausgaben dar. Ohne zusätzliche<br />

Software bietet die Shell nur<br />

sehr begrenzte Möglichkeiten. Dafür<br />

funktionieren diese eigentlich immer.<br />

Fragen Sie Eingaben mittels Zenity oder<br />

der neueren Variante YAD ab (Listing 5),<br />

bringt das den SHC nicht aus dem Tritt.<br />

In Listing 5 erhält zunächst die Umgebungsvariable<br />

EINGABE durch die Abfrage<br />

mittels YAD ihren Wert. Der Eingabedialog<br />

ist mit der Zeichenkette eingabe<br />

vorbelegt. Sie dürfen diese aber verändern,<br />

was der Parameter ‐‐editable ermöglicht.<br />

Anschließend zeigt der zweite<br />

Aufruf von YAD den aktuellen Inhalt der<br />

Variablen $EINGABE an.<br />

Beim Einsatz externer Programme gilt<br />

es zu beachten, dass SHC sie nicht etwa<br />

in das binäre Programm einbindet, sondern<br />

immer noch wie im Skript aufruft.<br />

Das setzt voraus, dass sich diese im Pfad<br />

befinden. Das Gleiche gilt für die aufrufende<br />

Bash, die ebenfalls im erwarteten<br />

Pfad liegen muss. Alternativ berücksichtigt<br />

SHC absolute Pfade beim Ausführen<br />

des kompilierten Skripts.<br />

Sie steuern SHC hauptsächlich über<br />

Optionen, deren wichtigste die Tabelle<br />

SHC-Optionen erläutert. Darüber hinaus<br />

wertet SHC zwei Umgebungsvariablen<br />

aus: $CC enthält den verwendeten C-<br />

Compiler, voreingestellt cc. In diesem<br />

Zusammenhang kommt die zweite Variable<br />

$CFLAGS zum Einsatz, die die Optionen<br />

für den Compiler enthält.<br />

Alternativen<br />

Es gibt eine Reihe von Alternativen zum<br />

Shell Compiler. Eine Suche nach shell<br />

script encrypt oder shell script obfuscate<br />

liefert unter anderem Programme<br />

die auf vielfältige Weise den Code<br />

umwandeln. Dazu gehören Obfsh û<br />

oder Shellcrypt û.<br />

Listing 3<br />

# shc ‐v ‐f hello.sh<br />

shc shll=bash<br />

shc [‐i]=‐c<br />

shc [‐x]=exec '%s' "$@"<br />

shc [‐l]=<br />

shc opts=<br />

shc: cc hello.sh.x.c ‐o hello.sh.x<br />

shc: strip hello.sh.x<br />

shc: chmod go‐r hello.sh.x<br />

Listing 4<br />

$ true && echo "OK" # OK<br />

$ false && echo "OK" # keine Ausgabe<br />

$ true || echo "OK" # keine Ausgabe<br />

$ false || echo "OK" # OK<br />

$ true || echo "nö" && echo "ja" # ja<br />

$ true && echo "ja" || echo "nö" # ja<br />

SHC-Optionen<br />

Option<br />

Erläuterung<br />

‐e Datum Begrenzt die Zeit, in der sich das Programm ausführen lässt bis auf das angegebene Datum. Der Compiler erwartet<br />

das Datum in der Form TT/MM/JJJJ. Nach dem Ablauf erscheint eine Warnung.<br />

‐m Nachricht Nachricht erscheint zusätzlich nach dem Ablauf der durch ‐e eingestellten Zeit.<br />

‐f Skript Zwingend erforderlich, bezeichnet im Argument das Skript, das SHC übersetzen soll.<br />

‐i Shell‐Optionen Spezielle Optionen für die Bash.<br />

‐x Befehl Das binäre Programm startet das Skript mittels exec, voreingestellt gefolgt von $@ (alle Befehlszeilenoptionen und<br />

‐argumente).<br />

‐l Option Definiert die letzte Befehlszeilenoption, normalerweise ‐‐ (was auch voreingestellt ist).<br />

‐r Lockert die Einstellungen in Bezug auf die Sicherheit beim Übersetzen, sodass die binären Programme auf anderen<br />

Rechnern mit dem gleichen Betriebssystem laufen. Bei Arch Linux ist diese Option derzeit zwingend erforderlich.<br />

‐D Aktiviert den Debug-Modus des binären Programms. Das erzeugt eine Menge zusätzlicher Informationen.<br />

‐T Ein Programm erstellen, das sich mit Strace oder ähnlichen Tools verfolgen lässt.<br />

‐A Zeigt eine kurze Info und beendet SHC, ohne das Skript zu kompilieren.<br />

42 www.linux-user.de<br />

03.2014


SHC<br />

Schwerpunkt<br />

Während Ersteres den Quelltext durch<br />

zusätzlich eingefügte oder entfernte<br />

Leerzeichen und ‐zeilen und zusätzlichen<br />

Müll unleserlich macht, geht<br />

Shellcrypt den Weg einen Schritt weiter:<br />

Das Programm erzeugt ein wirklich verschlüsseltes<br />

Programm mit der Extension<br />

.bin, das erst nach Entschlüsseln mit<br />

der gleichen Software wieder läuft. Das<br />

dazu nötigte Programm arbeitet gleichzeitig<br />

als Interpreter.<br />

Nachteilig bei dieser Methode: Sie benötigten<br />

stets auch auf dem Zielsystem<br />

ein installiertes Shellcrypt. Auf eine ähnliche<br />

Weise ließen sich GPG-verschlüsselte<br />

<strong>Skripte</strong> verwenden, die Sie zunächst<br />

symmetrisch durch die Option ‐c verschlüsseln<br />

und anschließend mit der<br />

Option ‐d wieder entschlüsseln.<br />

Fazit<br />

Der SHC rangiert irgendwo zwischen einem<br />

Spielzeug und nützlichem Tool. Als<br />

wirklich sicher verschlüsselt könne die<br />

mit dem Compiler erzeugten binären<br />

Programme nicht gelten: Zum einen<br />

funktionieren sie nur, sofern alle im<br />

Skript benötigen externen Programme<br />

auf dem ausführenden Rechner vorhanden<br />

sind, zum anderen lesen Sie mit<br />

einigem Aufwand die Quelltexte aus.<br />

Dem gegenüber steht die einfache<br />

Anwendung und die Möglichkeit, <strong>Skripte</strong><br />

vor unbeabsichtigten Veränderungen<br />

zu schützen. Die Alternativen zum SHC<br />

haben jeweils ihre speziellen Anforderungen<br />

oder zeigen sich weniger flexibel<br />

in Bezug auf Portabilität. (agr) n<br />

Listing 5<br />

EINGABE=$(yad ‐‐entry "eingabe" ‐‐editable); yad ‐‐entry $EINGABE<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31641<br />

03.2014 www.linux-user.de<br />

43


Praxis<br />

Giada<br />

Loops & Co. bearbeiten mit Giada<br />

Klopfzeichen<br />

Loops und Effekte gehören<br />

zum Handwerkszeug des<br />

modernen DJs. Diese Kunst<br />

beherrscht Giada perfekt.<br />

Andreas Reitmaier<br />

Readme<br />

Das Programm Giada dient hauptsächlich<br />

dazu, Loops und Drum-Loops für den Live-<br />

Einsatz vorzubereiten. Dass die Software<br />

sich dank der zahlreichen Schnittstellen und<br />

einfachen Konzeption für andere Projekte<br />

eignet, steht außer Zweifel.<br />

Hinter Giada verbirgt sich ein kleines<br />

Stück Musik-Software, das sich für vielfältige<br />

Zwecke eignet. Hauptsächlich zur<br />

Arbeit mit Loops konzipiert, macht es<br />

aber auch als Drum-Einheit eine gute<br />

Figur und erleichtert die Integration in<br />

andere Projekte über VST und MIDI.<br />

Das Programm verfolgt das Rezept<br />

„einfache Oberfläche, geringe Systembelastung,<br />

maximale Möglichkeiten“.<br />

Beim ersten Start macht sich das bemerkbar:<br />

Sie sehen mehr oder weniger<br />

einen grauen Kasten mit ein paar wenigen<br />

Bedienelementen – eine Oberfläche,<br />

die ganz anders wirkt, als die vieler<br />

anderer Musikprogramme 1 . Aber sobald<br />

Sie sich mit der Software vertraut<br />

gemacht haben, fällt der Umgang damit<br />

in der Regel leicht.<br />

Starten Sie Giada, finden Sie den bereits<br />

angesprochenen grauen Kasten auf<br />

dem Bildschirm, den einige Kästchen<br />

und Symbole zieren. Um den ersten<br />

Sound zu laden, klicken Sie auf Add new<br />

channel und anschließend auf Sample<br />

channel. Andernfalls erzeugen Sie einen<br />

Midi-Kanal für entsprechende Signale.<br />

Über einen rudimentären Datei-Dialog<br />

öffnen Sie die gewünschte Audiodatei,<br />

die in einem unkomprimierten Format<br />

vorliegen sollte, wie WAV oder AIFF.<br />

MP3-Dateien eignen sich nicht.<br />

Der erste Beat<br />

Bevor Sie darangehen, die nächsten Segmente<br />

zu importieren, lohnt es sich, den<br />

neuen Sound und die Verbindung zum<br />

Audiosystem zu testen. Dazu spielen Sie<br />

die importierten Daten ab, indem Sie auf<br />

das ganz links stehende Quadrat neben<br />

dem Sound klicken, in Giada-Sprechweise:<br />

auf den Kanal.<br />

Oberhalb der Kanäle sehen Sie einen<br />

Balken mit vier Kästchen, die einzelne<br />

Beats im jeweiligen Takt repräsentieren.<br />

Installation<br />

Die Drum-Applikation steht auf der Projekt-Website http:// www.​<br />

giadamusic. com für Linux, Windows und Mac OS X bereit. Für Linux<br />

gibt es DEB-Pakete, die sich unter anderem für Ubuntu und Derivate<br />

eignen, und zwar sowohl als 32- als auch als 64-Bit-Variante. Die Entwickler<br />

bezeichnen die 64-Bit-Variante allerdings als experimentell.<br />

Dies bestätigte sich im Test: Derzeit neigt die Software noch zu Hängern<br />

und Abstürzen. Benutzer anderer Distributionen weichen auf die<br />

Installation aus dem Quellcode aus. Eine Suche in den gängigen<br />

RPM-Ressourcen ergab, dass dort überwiegend ältere Giada-Versionen<br />

vorliegen, deren Einsatz sich nicht unbedingt empfiehlt.<br />

44 www.linux-user.de<br />

03.2014


Giada<br />

Praxis<br />

Darüber sitzt das Steuerpult mit der<br />

Schaltfläche für Play/​Pause und einem,<br />

der die Position auf den ersten Beat zurücksetzt.<br />

Der Kreis signalisiert die Aufnahme<br />

für Ereignisse, der Punkt die<br />

Audio-Aufnahme.<br />

Mit Giada sind Sie aber nicht auf die<br />

standardmäßig konfigurierten vier Beats<br />

beschränkt. Über die Konfiguration des<br />

Sequenzers oberhalb der Beat-Anzeige<br />

stellen Sie die Taktung und eben auch<br />

die Anzahl der Beats für die Sequenz ein.<br />

Dies geschieht entweder in Zahlenwerten<br />

über ein Eingabefeld oder mittels<br />

der beiden Schalter hinter der Anzeige,<br />

mit der Sie bei Bedarf im laufenden Betrieb<br />

die Anzahl der Schläge anpassen.<br />

Wählen Sie etwa die Einstellung 16/​4,<br />

stehen vier Takte mit vier Schlägen bereit.<br />

Auf Wunsch offeriert Giada auch ein<br />

Metronom. Sie aktivieren es, indem Sie<br />

den unscheinbaren Schalter betätigen,<br />

der auf OFF steht.<br />

© Colin Broug, sxc.hu<br />

baren Kreis am Ende der Reihe. Das<br />

Kästchen an erster Stelle der Zeile dient<br />

zum Starten des Loops.<br />

Ein Rechtsklick auf den Namen des<br />

Kanals öffnet das Menü. Über Set key<br />

ordnen Sie hier dem Kanal eine beliebige<br />

Taste auf der Tastatur zu, nicht etwa<br />

einem angeschlossenen Audio-Keyboard.<br />

Über diese Taste starten Sie den<br />

Loop. Über die Schaltflächen hinter<br />

dem Namen steuern Sie den Abspielmodus<br />

2 . Über M und S steuern die Aktivität<br />

des Kanals: Mit M (engl.: „mute“)<br />

schalten Sie den Kanal stumm. Mit S<br />

(„solo“) schalten Sie, wie von anderen<br />

Audio-Programmen gewohnt, alle anderen<br />

Spuren stumm.<br />

Mit der letzten Schaltfläche aktivieren<br />

Sie die Effektsektion. Haben Sie bereits<br />

Aktionen aufgenommen, erscheint hinter<br />

dem Namen des Kanals als Signal<br />

dafür ein Kästchen mit einem R. Damit<br />

aktivieren oder deaktivieren Sie das Abspielen<br />

der Aktionen. Ist das Abspielen<br />

deaktiviert, schaltet das Programm die<br />

Ereignisse stumm. Starten Sie den Kanal<br />

beziehungsweise Loop jedoch manuell,<br />

gibt die Applikation den Sound wie kon-<br />

Giada 0.8.2<br />

LU/giada/<br />

Loops und Kanäle<br />

Weit mehr Einstellungen bieten die einzelnen<br />

Kanäle beziehungsweise Loops.<br />

Die Funktionen und Steuerelemente<br />

sind direkt in der jeweiligen Anzeigenreihe<br />

untergebracht. Die Lautstärke eines<br />

Kanals regeln Sie mit dem unschein-<br />

1 Giadas Benutzerschnittstelle weicht optisch stark von jener anderer Programme ab,<br />

erweist sich aber in Bezug auf die Funktionalität durchaus als durchdacht.<br />

2 Das kompakte Interface der Software setzt auf kanalbezogene Aktionen.<br />

03.2014 www.linux-user.de<br />

45


Praxis<br />

Giada<br />

3 Der Action-Editor bietet die Möglichkeit, einen Kanal individuell in Bezug auf Lautstärke<br />

anzupassen. Das erledigen Sie über eine frei definierbare Hüllkurve.<br />

figuriert aus. Darin unterscheidet sich<br />

die Funktion von der Mute-Funktion.<br />

Aktionen bearbeiten<br />

Über einen Rechtsklick auf den Namen<br />

des Kanals rufen Sie ein Kontextmenü<br />

auf. Edit Actions bietet die Möglichkeit,<br />

die Eigenschaften eines Kanals zu bearbeiten<br />

3 . Bei einem Audiokanal sehen<br />

Sie drei horizontal angeordnete Bereiche:<br />

Start/​Stop, Mute und Volume. In der<br />

Regel enthält bei einfachen Aufnahmen<br />

die obere Reihe einige Startsignale, während<br />

die beiden anderen noch leer sind.<br />

Per Mausklick setzen Sie nun weitere<br />

Startpunkte, passen die Lautstärke an<br />

und sorgen mit einer entsprechenden<br />

Kurve dafür, dass der Sound an den gewünschten<br />

Stellen aussetzt.<br />

Der Action-Editor bietet auch die Möglichkeit,<br />

die Takte noch feiner aufzuteilen.<br />

Dazu klicken Sie auf die Zahl neben<br />

der Aktionen-Auswahl und wählen den<br />

gewünschten Wert. Nun können Sie die<br />

einzelnen Loops genauer quantisieren,<br />

was besonders bei Drum-Sounds von<br />

Interesse ist. Start/​Stop-Aktionen fügen<br />

Sie hinzu, indem Sie zunächst den Zustand<br />

auswählen. Nun setzen Sie neue<br />

Aktionen per Mausklick. Mit der rechten<br />

Maustaste löschen Sie diese wieder.<br />

Der Dialog bietet die Möglichkeit, die<br />

einzelnen Ereignisse zu verschieben; im<br />

Zweifelsfall geht das mit Löschen und<br />

neu Erstellen jedoch fixer. Das Programm<br />

erlaubt es außerdem, die betreffende<br />

Sequenz abzuspielen, während<br />

Sie im Editor Änderungen vornehmen.<br />

Auf diese Weise behalten Sie immer die<br />

Kontrolle über die Eingaben. Verwenden<br />

Sie die Aktion Kill channel, stoppt der<br />

Loop an der gewünschten Stelle, unabhängig<br />

von weiteren Einstellungen.<br />

Die anderen Spuren ähneln sich in der<br />

Wirkung ein wenig: Für den Volumen-<br />

Kanal erstellen Sie Hüllkurven, um den<br />

Sound anzupassen. Im Mute-Kanal erzeugen<br />

Sie mit einem Mausklick ein Ereignis<br />

mit einem Start- und Endpunkt.<br />

Im Volumen-Kanal erzeugt der erste<br />

Mausklick einen Anfangs- und Endpunkt<br />

sowie einen Steuerpunkt an der Stelle,<br />

an die Sie geklickt haben. Über weitere<br />

Punkte passen Sie die Hüllkurve an.<br />

4 Mit der Funktion<br />

Normalize passen<br />

Sie klangliche Ausreißer<br />

in einem<br />

Sample an.<br />

46 www.linux-user.de<br />

03.2014


Giada<br />

Praxis<br />

In sämtlichen Spuren entfernen Sie Aktionen<br />

und Steuerpunkte über die rechte<br />

Maustaste. Bearbeiten Sie einen Midi-Kanal,<br />

öffnet sich im Action-Editor nur eine<br />

Spur. Diese entspricht vom Aussehen<br />

her dem typischen Piano-Roll-Editor und<br />

folgt dem gleichen Bedienkonzept. Dabei<br />

editieren Sie Noten, also MIDI-Events,<br />

die die Software als Balken anzeigt, indem<br />

Sie Position und Länge anpassen.<br />

Audio-Bearbeitung<br />

Ebenfalls über das Kontextmenü hinter<br />

dem Kanalnamen rufen Sie den Audio-<br />

Editor auf. Mit diesem bearbeiten Sie bei<br />

Bedarf das Audiosignal in einer Ansicht<br />

als Hüllkurve. Darunter befinden sich einige<br />

Regler, mit denen Sie die Wiedergabe<br />

beeinflussen.<br />

In der Regel zählt zu den wichtigsten<br />

Instrumenten das Festlegen von Startund<br />

Endpunkt des Loops. Diese definieren<br />

Sie über die untersten Eingabefelder<br />

oder – etwas intuitiver – mit den beiden<br />

Reglern S und E in der Hüllkurve. Eine<br />

Zoom-Funktion erleichtert es, die passenden<br />

Stellen genau zu finden.<br />

Weiterhin passen Sie im Editor die<br />

Lautstärke des Clips an. Dabei besteht<br />

die Möglichkeit, diese über den Volumenregler<br />

abzusenken oder mit dem<br />

Boost-Regler zu erhöhen. Lassen Sie dabei<br />

Vorsicht walten, da sich sonst sehr<br />

schnell Verzerrungen einstellen.<br />

In einigen Fällen erweist sich die Funktion<br />

Normalize als sinnvoll: Sie passt die<br />

Kurve an das lauteste Ergebnis im Sample<br />

an, wobei sie die leisen Passagen stärker<br />

anhebt als laute 4 . Dadurch kommt ein<br />

Sample in einer Sequenz unter Umständen<br />

deutlich besser zur Geltung.<br />

Allerdings ist auch diese Funktion mit<br />

einer gewissen Vorsicht zu genießen.<br />

Als dritte Funktionseinheit finden Sie<br />

im Audio-Editor noch den Pitch-Regler,<br />

mit dem Sie die Tonhöhe des Samples<br />

anpassen. Den Pitch stellen Sie manuell<br />

über den kleinen Regler ein oder überlassen<br />

es Giada, die Geschwindigkeit an<br />

Takt oder Sequenz anzupassen. Überzeugt<br />

das Ergebnis nicht, gibt es hier –<br />

ebenso wie beim Festlegen der Startund<br />

Endpunkte – einen Reset-Schalter.<br />

Über die Einstellungen bestimmen Sie<br />

grundlegende Werte für die Hardware,<br />

sprich die Ein- und Ausgabekanäle. Außerdem<br />

legen Sie hier das Soundsystem<br />

sowie die Puffergröße fest 5 . Sofern Sie<br />

mehr als eine Audio-Hardware installiert<br />

haben, wählen Sie noch die gewünschte<br />

aus. Das Gleiche gilt für die Einstellungen<br />

zum Midi-System.<br />

Im dritten Reiter bestimmen Sie das<br />

Verhalten von Giada. Hier legen Sie unter<br />

anderem fest, ob Kanäle umgehend<br />

anhalten sollen, sobald diese oder der<br />

Sequenzer stoppen, oder ob dieser erst<br />

alle aktivierten Sounds zu Ende spielen<br />

soll. Weiterhin entscheiden Sie hier, ob<br />

die Software Kanäle, in denen Sie Aktionen<br />

hinterlegt haben, als Loop-Kanäle<br />

behandelt, obwohl der Abspielmodus<br />

auf shot steht.<br />

Giada eignet sich auch für den Live-<br />

Einsatz. Dazu bereiten Sie ein komplettes<br />

Set an Loops und zusätzlichen<br />

Sounds vor. Es ist sinnvoll, jedem Kanal<br />

eine entsprechende Taste zuzuordnen,<br />

um alle komfortabel mit der Tastatur abzurufen.<br />

Haben Sie sämtliche Einstellungen<br />

vorgenommen, speichern Sie das<br />

gesamte Set als Patch ab.<br />

Wollen Sie Ihre Einstellungen samt<br />

sämtlicher Loops auf einem anderen<br />

Gerät verwenden, sichern Sie diese als<br />

Project. Dabei schreibt Giada sowohl die<br />

Einstellungen als auch sämtliche Audiodateien<br />

in einen Ordner, den Sie bei Bedarf<br />

auf ein anderes Gerät transferieren.<br />

So gelingt der Austausch zwischen der<br />

Workstation zu Hause und dem Laptop,<br />

das Sie unterwegs benutzen.<br />

Fazit<br />

Giada fühlt sich beim ersten Einsatz etwas<br />

sperrig an. Mit der Zeit erschließt<br />

sich dann das Bedienkonzept, und die<br />

Funktionen erscheinen zunehmend<br />

logisch angeordnet.<br />

Es eignet sich in der jetzigen Form sowohl<br />

für die Arbeit im Studio als auch für<br />

den Live-Einsatz. Allerdings wäre es erfreulich,<br />

dass die Anwendung noch etwas<br />

stabiler liefe. Gelegentliche Hänger<br />

traten vor allem bei schnell ausgeführten<br />

Bedienschritten auf. (agr) n<br />

5 Giada erlaubt es, Ausgabegeräte und<br />

das Soundsystem auszuwählen.<br />

03.2014 www.linux-user.de<br />

47


Praxis<br />

Konsolen-Audioplayer<br />

Audiodaten abspielen im Terminal<br />

Einfache<br />

Freuden<br />

Schlank, schnell und effizient: Audioplayer für<br />

die Konsole ebnen den direkten Weg zum<br />

Hörerlebnis. Frank Hofmann, Thomas Winde<br />

© Stephanie Berghäuser, sxc.hu<br />

Linux steht für Vielfalt --auch in Sachen<br />

Audioplayer. Die Auswahl und der Einsatz<br />

geeigneter Software fällt allerdings<br />

angesichts der Vielfalt û etwas schwer.<br />

Wer sich für eins der Programme entscheidet,<br />

legt in der Regel Wert auf Alltagstauglichkeit<br />

und unkomplizierte<br />

Bedienung über die Tastatur. Alle vorgestellten<br />

Programme stehen als Paket für<br />

Debian 7 „Wheezy“ und häufig für andere<br />

Linux-Distributionen in einer stabilen<br />

Variante bereit.<br />

Geht es nur darum, Audiodateien abzuspielen,<br />

und das möglichst ohne viel<br />

Schnickschnack drumherum, dann fallen<br />

die Anforderungen sehr niedrig aus. Die<br />

Bedienkonzepte und Tastenkombinationen<br />

der getesteten Programme fallen<br />

höchst unterschiedlich aus und bieten<br />

durchaus Überraschungen. Einige Programme<br />

ordnen einer Funktion mehrere<br />

Tasten zu und erlauben es, die Kombinationen<br />

nach Belieben anzupassen.<br />

Funktionen<br />

Zu den grundlegenden Funktionen zählen<br />

das Abspielen der Audiodatei, das<br />

Unterbrechen und Anhalten sowie das<br />

Vor- und Zurückspringen. Darüber hinaus<br />

bietet es Komfort, die Lautstärke aus<br />

der Applikation zu regulieren. Alternativ<br />

nutzen Sie die Werkzeuge des Systems<br />

(siehe Kasten Volume regeln). Das Zusammenstellen,<br />

Bearbeiten und Abspielen<br />

von Wiedergabelisten (Playlists) gehört<br />

ebenfalls zu den essentiellen Features,<br />

alles andere zum Wunschkonzert.<br />

Alle getesteten Programme geben Audiodaten<br />

im Format MP3 und Ogg-Vorbis<br />

wieder, einige Kandidaten auch weitere<br />

Formate. Die gewünschten Audio-<br />

Readme<br />

Um eine Audiodatei wiederzugeben, bedarf<br />

es keiner komplexen Programme. Das Terminal<br />

bietet sich geradezu als Umgebung<br />

an, denn viele Werkzeuge hier direkt bereit.<br />

Dieser Artikel stellt eine kleine Auswahl an<br />

Software mit Ncurses-Oberfläche vor.<br />

Volume regeln<br />

Am besten nutzen Sie zuM Regeln der<br />

Lautstärke entweder Alsamixer û oder<br />

Aumix û aus den Paketen alsa-utils beziehungsweise<br />

aumix.<br />

Bei Alsamixer regulieren Sie die Lautstärke<br />

über die Pfeiltasten oder die vom Vim bekannten<br />

Bewegungstasten. Den Wert für<br />

die Lautstärke lesen Sie als Zahlenwert<br />

unterhalb des Reglers ab.<br />

Bei Aumix wählen Sie als Erstes mit den<br />

Pfeiltasten den gewünschten Kanal aus.<br />

Dann regeln Sie dessen Lautstärke ebenfalls<br />

mit den Pfeiltasten – nach links für<br />

leiser und nach rechts für lauter.<br />

48 www.linux-user.de<br />

03.2014


Konsolen-Audioplayer<br />

Praxis<br />

daten wählen Sie direkt über die Ncurses-basierte<br />

Oberfläche der Programme<br />

aus oder übergeben diese beim Start auf<br />

der Kommandozeile als Parameter.<br />

Die meisten Programme akzeptieren<br />

dabei die Daten entweder als einzelne<br />

Datei, komplettes Verzeichnis oder als<br />

URL eines Streams über das Internet,<br />

obwohl die einzelnen Funktionen teils<br />

etwas versteckt sind.<br />

1 Das Programm Mp3info zeigt Informationen zur ausgewählten MP3-Datei: Titel,<br />

Interpret, Album, Nummer des Stücks, Jahr der Veröffentlichung und Genre.<br />

Tags<br />

Viele Formate enthalten Meta-Informationen.<br />

Die einzelnen Programme verwenden<br />

die Metadaten der Audiodateien<br />

zur Anzeige in den Übersichten. Um<br />

zu prüfen, ob die Informationen vorhanden<br />

sind, nutzen Sie das Programm Mp-<br />

3info û aus dem gleichnamigen Paket.<br />

Beim Aufruf geben Sie dazu den Namen<br />

der MP3-Datei als Parameter mit 1 . Für<br />

das Ogg-Format nutzen Sie stattdessen<br />

das Programm Ogginfo û aus dem Paket<br />

vorbis-tools. Es funktioniert analog.<br />

sowie die Dauer – jeweils für das einzelne<br />

Musikstück und die komplette Liste<br />

der Stücke.<br />

Über die letzte Zeile des Programmfensters<br />

setzen Sie analog zum Editor<br />

Vim Kommandos an die Applikation ab.<br />

Mittels :add Dateiname fügen Sie der<br />

aktuellen Wiedergabeliste eine einzelne<br />

C* Music Player<br />

Cmus û aus dem gleichnamigen Debian-Paket<br />

verfügt über eine mehrfarbige<br />

Ncurses-Oberfläche. Diese besitzt sieben<br />

Ansichten, die Sie über die passenden<br />

Zifferntasten erreichen. Mit [1] und [2]<br />

gelangen Sie zur Ansicht der Bibliothek<br />

(Library View, Sorted Library View), mit [3]<br />

und [4] zur Wiedergabeliste (Playlist<br />

View, Play Queue View). Ein Druck auf [5]<br />

öffnet den Dateibrowser (Browser View),<br />

mit [6] gelangen Sie zum Filter (Filters<br />

View) und mit [7] zur Hilfe und den Einstellungen<br />

(Settings View).<br />

Als Formate unterstützt das Programm<br />

neben MP3 und Ogg-Vorbis auch FLAC,<br />

WAV, Windows Media Audio (WMA), AAC<br />

sowie das native Format von Ffmpeg.<br />

Für Letzteres ist ein zusätzliches Plugin<br />

erforderlich, welches unter Debian im<br />

Paket cmus-plugin-ffmpeg bereit steht.<br />

Die Anzeige im Terminal ähnelt einem<br />

Dateibrowser, aus dem Sie zunächst die<br />

abzuspielenden Audiodateien auswählen.<br />

Am unteren Fensterrand des Terminals<br />

sehen Sie den gerade gewählten<br />

Titel, die aktuelle Position im Musikstück<br />

2 Cmus bietet neben dem Steuern über Tasten eine Vi-ähnliche Kommandozeile.<br />

Mit den Tasten<br />

Programm Cmus Cplay Mocp Open Cubic Player<br />

Hilfe [ 7 ] [H] [H],[?] [F1],[H],[?]<br />

Abspielen [X],[Eingabe] [Eingabe] [Eingabe] [Eingabe]<br />

Pause [C] [Z],[X] [P],[Leertaste] [P],[Strg]+[P]<br />

Stop [V] [S]<br />

Vorspulen [Pfeil rechts] [Strg]+[F]<br />

Zurückspulen [Pfeil links] [Strg]+[B]<br />

Nächster Titel [Z] [P] [N]<br />

Vorheriger Titel [B] [N] [B]<br />

Lauter [+],[=] [+],[=],[ 9 ] [.] [F3]<br />

Leiser [-] [-],[ 1 ] [,] [F2]<br />

Titelsuche [/​] [/​],[?] [/​],[G]<br />

Anzeige Restzeit [T]<br />

Dateiauswahl [ 5 ]<br />

Beenden :quit [Q],[Q] [Q] [Esc]<br />

‐r Ausgabe im<br />

Querformat<br />

‐R Ausgabe im<br />

Hochformat<br />

nur bei PS-<br />

Ausgabe<br />

nur bei PS-<br />

Ausgabe<br />

03.2014 www.linux-user.de<br />

49


Praxis<br />

Konsolen-Audioplayer<br />

Stream im Format MP3 oder Ogg-Vorbis<br />

bereit. Die Details dazu entnehmen Sie<br />

der Webseite des Anbieters.<br />

Mit dem Kommando :player‐play<br />

starten Sie das Abspielen, mit :player‐stop<br />

unterbrechen Sie es wieder.<br />

Mithilfe von :quit beenden Sie Cmus.<br />

Weitere Kommandos finden Sie in der<br />

Tabelle Mit den Tasten.<br />

Cplay<br />

3 Cplay zeigt beim Abspielen der Stücke lediglich eine Dateiliste an.<br />

Datei hinzu. Für Streams geben Sie eine<br />

URL an. Der folgende Aufruf spielt den<br />

Stream von Radio Radius der ETH Zürich:<br />

:add http://relay.radio.ethz.ch/sU<br />

ender.ogg<br />

Viele Sendestationen und Podcast-Anbieter<br />

stellen ihr Programm ebenfalls als<br />

Cplay û bietet eine sehr schlichte Oberfläche<br />

in Schwarz-Weiß 3 . Das Programm<br />

arbeitet wie ein Dateibrowser im<br />

Vollbildmodus. Dabei orientiert es sich<br />

an der Größe des Terminals und nutzt<br />

das aktuelle Verzeichnis als Ausgangspunkt.<br />

Aus diesem wählen Sie zunächst<br />

mithilfe der Pfeiltasten oder den von Vim<br />

bekannten Bewegungstasten die gewünschte<br />

Audiodatei. Über [Eingabe]<br />

spielen Sie die ausgewählten Titel ab.<br />

Im Fenster sehen Sie oben links das<br />

Verzeichnis, aus dem Sie die Daten auswählen,<br />

und rechts die Anzahl möglicher<br />

Titel. In der vorletzten Zeile des Terminals<br />

zeigt die Applikation einen Fortschrittsbalken<br />

an, in der letzten den Namen<br />

der aktuellen Audiodatei sowie die<br />

verbleibende Laufzeit des Stücks.<br />

Das Programm Cplay unterstützt die<br />

Formate MP3, Ogg-Vorbis, FLAC, WAV,<br />

Modules, Musepack, AAC und Windows<br />

Media Audio (WMA).<br />

Media on Console Player<br />

4 Der Audioplayer Mocp sieht nicht nur aus wie der beliebte Dateimanger Midnight<br />

Commander, er verhält sich in Bezug auf die Bedienung ähnlich.<br />

Listing 1<br />

01 $ cat .moc/playlist.m3u<br />

02 #EXTM3U<br />

03 #MOCSERIAL: 1280<br />

04 #EXTINF:103,/home/frank/audio/nils/Der_kleine_Nils_bei_Mediamarkt.<br />

mp3<br />

05 /home/frank/audio/nils/Der_kleine_Nils_bei_Mediamarkt.mp3<br />

06 #EXTINF:122,/home/frank/audio/nils/Der_kleine_Nils_hat_eine_Pistole.<br />

mp3<br />

07 /home/frank/audio/nils/Der_kleine_Nils_hat_eine_Pistole.mp3<br />

08 #EXTINF:126,/home/frank/audio/nils/Der_kleine_Nils_im_Klo.mp3<br />

09 /home/frank/audio/nils/Der_kleine_Nils_im_Klo.mp3<br />

Das Programm Mocp û aus dem Debian-Paket<br />

moc sieht nicht nur so aus wie<br />

der konsolbasierte Dateimanager Midnight<br />

Commander, es folgt auch dessen<br />

Bedienkonzept 4 . Das Interface besteht<br />

aus zwei Fenstern im Terminal:<br />

links die Liste der Dateien im gewählten<br />

Verzeichnis; rechts die Liste der Titel, die<br />

zur Wiedergabe bereit stehen.<br />

Darunter zeigt das Programm die Anzahl<br />

der Titel, die Lautstärke sowie die<br />

gesamte Spielzeit der Wiedergabeliste<br />

an. Zum jeweils aktuell laufenden Track<br />

sehen Sie als Information unter anderem<br />

die Sample-Rate und die Art der Wiedergabe<br />

– mono oder stereo.<br />

50 www.linux-user.de<br />

03.2014


Konsolen-Audioplayer<br />

Praxis<br />

Um einen Stream abzuspielen, fügen Sie<br />

diesen über die Oberfläche mit [O] hinzu<br />

oder übergeben die URL direkt beim<br />

Programmstart als Parameter. Als Audioformate<br />

unterstützt Mocp MP3, Ogg-<br />

Vorbis, Flac, WAV, Speex, Musepack<br />

(MPC), AIFF, AU, Opus und Windows<br />

Media Audio (WMA).<br />

Die Software zeichnet sich durch eine<br />

Reihe von Besonderheiten aus: Zwischen<br />

den beiden Fenstern wechseln Sie<br />

mit [Tab] hin und her. Zum Sortieren der<br />

Track-Liste verwenden Sie analog zu Vim<br />

[U] (Track nach oben) oder [J] (Track<br />

nach unten).<br />

Beenden Sie das Programm über [Q],<br />

läuft es als Daemon im Hintergrund weiter.<br />

Gibt es gerade eine Datei wieder, hören<br />

Sie diese weiterhin. Rufen Sie Mocp<br />

zu einem späteren Zeitpunkt erneut auf,<br />

sehen Sie die bereits erstellte Wiedergabeliste<br />

sowie alle Informationen zum<br />

aktuell laufenden Stück.<br />

Open Cubic Player<br />

Das Programm Open Cubic Player û<br />

gibt es seit 1994. Derzeit steht es für verschiedene<br />

Plattformen bereit, darunter<br />

Linux, DOS und Microsoft Windows. Bei<br />

Debian finden Sie es im Paket opencubicplayer.<br />

Die auf Ncurses basierende Variante<br />

des Programms starten Sie über das<br />

Kommando ocp‐curses 5 . Darüber hinaus<br />

existiert eine Version mit grafischer<br />

5 Der Open Cubic Player in der Konsole mit einem Frequenzprofil des aktuellen Tracks.<br />

Oberfläche 6 , die Sie über ocp‐x11 starten.<br />

Die Unterschiede zwischen den einzelnen<br />

Varianten wirken sich nur in den<br />

verschiedenen Ansichten des Programms<br />

aus, haben aber keinen Einfluss<br />

auf die Wiedergabe.<br />

Der Open Cubic Player startet zunächst<br />

als einfacher Dateimanager, aus<br />

dem Sie die abzuspielende Datei über<br />

die Pfeiltasten auswählen. Mit [Eingabe]<br />

starten Sie die Wiedergabe. Darauf öffnet<br />

sich ein Equalizer, der Höhen und<br />

Tiefen der gerade wiedergegebenen<br />

Töne anzeigt. Über [Esc] gelangen Sie<br />

wieder zurück zum Hauptmenü.<br />

03.2014 www.linux-user.de<br />

51


Praxis<br />

Konsolen-Audioplayer<br />

gängigkeit bleiben einige Funktionen<br />

bislang ohne eine Zuordnung mit einer<br />

Taste, darunter etwa die Suche nach<br />

einem Titel und das Abspielen eines<br />

Streams aus dem Netzwerk.<br />

Das Programm spielt die Audioformate<br />

MP3, Ogg-Vorbis, MOD und SID sowie<br />

WAV, Audio-CD, MIDI, Flac, AdLib und<br />

außerdem YM ab.<br />

6 Die Version des Open Cubic Players mit grafischer Oberfläche bietet in Bezug auf die<br />

Wiedergabe keine Vorteile gegenüber der CLI-Variante.<br />

Die Autoren<br />

Thomas Winde bietet als selbständiger Unternehmer<br />

Ausflugsfahrten an und blickt<br />

daneben auf langjährige Erfahrung als<br />

Linux-Anwender zurück (http:// www.​<br />

ausflug‐web. de). Als Mitorganisator der<br />

Chemnitzer Linux-Tage ist er für das Einsteigerforum<br />

verantwortlich. Außerdem hält er<br />

regelmäßig Vorträge für Einsteiger.<br />

Frank Hofmann arbeitet er in Berlin im<br />

Büro 2.0 (http:// www. buero20. org), einem<br />

Open-Source Experten-Netzwerk, als<br />

Dienstleister mit Spezialisierung auf Druck<br />

und Satz (http:// www. efho. de). Er ist<br />

Mitgründer des Schulungsunternehmens<br />

Wizards of FOSS (http:// www.​<br />

wizards‐of‐foss. de/). Seit 2008 koordiniert<br />

er das Regionaltreffen der Linux User<br />

Groups aus der Region Berlin-Brandenburg.<br />

Der Open Cubic Player verfügt über sehr<br />

viele weitere Funktionen, die sich nur<br />

erschließen, wenn Sie sich vollständig<br />

durch die integrierte Hilfe gearbeitet<br />

haben. Die Manpage verrät hingegen<br />

kaum etwas zur Bedienung des Programms.<br />

Aufgrund der fehlenden Ein-<br />

Danksagung<br />

Die Autoren bedanken sich bei Axel Beckert<br />

für kritischen Anmerkungen und<br />

Kommentare im Vorfeld dieses Artikels.<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31704<br />

Schnell zur Playlist<br />

Wiedergabelisten<br />

Alle genannten Programme verstehen<br />

sich auf Wiedergabelisten. Cmus akzeptiert<br />

neben den Formaten M3U û und<br />

PLS û ein reines Textformat. Bei Cplay<br />

und dem Open Cubic Player ist das Format<br />

nicht spezifiziert. Mocp speichert<br />

seine Liste in der Datei .moc/playlist.<br />

m3u im Format M3U. Da sich dahinter reiner<br />

Text verbirgt (Listing 1), besteht die<br />

Möglichkeit, die Datei mit einem einem<br />

beliebigen Editor zu bearbeiten.<br />

Jedes Programm nutzt eigene Tastenkombinationen<br />

zum Zusammenstellen<br />

der Wiedergabelisten. Die Tabelle<br />

Schnell zur Playlist zeigt, wie die Belegung<br />

aussieht.<br />

Fazit<br />

Im direkten Vergleich machten die beiden<br />

Programme Cplay und Mocp im Test<br />

die beste Figur. Beide entsprechen vollständig<br />

den Erwartungen, die an die<br />

Kandidaten gestellt wurden, und ermöglichen<br />

es, sehr flink und auf einfachste<br />

Art und Weise zum Hörerlebnis in der<br />

Konsole zu gelangen.<br />

Die anderen Programme verfügen<br />

zwar über einen teilweise größeren<br />

Funktionsumfang, bedürfen daher aber<br />

aus diesem Grund oft etwas mehr Aufwand<br />

beim Einarbeiten. (agr) n<br />

Funktion Cmus Cplay Mocp Open Cubic Player<br />

Titel hinzufügen :add [A] [A] [>], [Einfg]<br />

Titel entfernen [Umschalt]+[D] [D] [D] [


Praxis<br />

Retext<br />

Retext hilft beim Editieren von Markdown-Dokumenten<br />

Ohne Umwege<br />

Einmal schreiben, in drei Formate exportieren –<br />

was der Editor Retext in der Theorie verspricht,<br />

klappt in der Praxis nur bedingt.<br />

Mario Blättermann<br />

Readme<br />

Mit Retext schreiben Sie im Handumdrehen<br />

Markdown-Dokumente, ohne sich mit einer<br />

komplizierten Syntax herumschlagen zu<br />

müssen. Das Ergebnis konvertieren Sie im<br />

Handumdrehen nach HTML und – zumindest<br />

theoretisch – in etliche weitere Formate.<br />

Das Schreiben von Dokumentation gehört<br />

ohnehin nicht zu den meistgeliebten<br />

Disziplinen beim Programmieren.<br />

Hinzu kommt, dass oft die Markup-Sprachen<br />

HTML und XML in deren verschiedenen<br />

Ausprägungen als Grundlage für<br />

die Dokumente dienen. Bekommen Sie<br />

schon beim Gedanken daran schlechte<br />

Laune, dann haben Sie mit Retext û genau<br />

die richtige Lösung zur Hand.<br />

Weniger ist mehr<br />

Mit Retext verfassen Sie Ihre Texte wahlweise<br />

in den Formaten Markdown û<br />

oder ReStructuredText û (siehe Kasten<br />

Markup vs. Markdown). Das vereinfacht<br />

die Sache ungemein, denn obwohl diese<br />

auf das Wesentliche beschränkten Sprachen<br />

zum Auszeichnen sich quasi selbst<br />

erklären, stehen die Möglichkeiten des<br />

Markup vs. Markdown<br />

Zwar gelten beim Erzeugen technischer Dokumentationen, Webseiten<br />

und vieler anderer Dokumente herkömmliche Markup-Sprachen wie<br />

XML oder HTML als De-Facto-Standard. Aufgrund ihrer Komplexität<br />

weisen sie aber einige Nachteile auf: Die ausgefeilten Formatierungen<br />

belegen derart viel Raum in den Dateien, dass Sie beim Lesen der<br />

Quelltexte die eigentlichen Inhalte oft kaum finden.<br />

Mitunter nehmen die Tags zum Formatieren mehr Platz ein als die zu<br />

übermittelnden Informationen. Die Lernkurve fällt so steil aus, dass<br />

technisch unbedarfte Benutzer oft nur über grafische Werkzeuge zum<br />

Bearbeiten einen Zugang finden und bei der Fehlersuche buchstäblich<br />

die Nadel im Heuhaufen suchen.<br />

Hier kommt Markdown zum Zuge. Die Syntax gestaltet sich ebenso<br />

strikt wie bei den Mitbewerbern, lässt sich aber beinahe intuitiv erlernen:<br />

Die Formatanweisungen sehen hier fast so aus, als gehörten sie<br />

zum Text, sodass sie die Lesbarkeit kaum einschränken. Daher nutzen<br />

viele Entwickler das Markdown-Format für die README-Dateien und<br />

liefern deren unformatierten Klartext oft gar nicht mehr mit.<br />

Markdown folgt einem pragmatischen Ansatz: Die Entwickler bauten<br />

einfach nur das ins Framework ein, was ohnehin in vielen Texten oder<br />

E-Mails zum Kennzeichnen zum Einsatz kommt: Leerzeilen für Absätze,<br />

Sternchen für Listenpunkte oder Rauten für Überschriften. Unter<br />

Umständen schreiben Sie also einfach so weiter wie bisher.<br />

54 www.linux-user.de<br />

03.2014


Retext<br />

Praxis<br />

Exports in andere Formate denen der<br />

etablierten Tools des Reviers kaum nach.<br />

Allerdings bringt der Editor auch keine<br />

ausgefeilten WYSIWYG-Funktionen mit.<br />

Retext fällt so schlicht aus, dass es sich<br />

ohne lange Eingewöhnungszeit fast aus<br />

© Adventur, sxc.hu<br />

1 Die Changelog-Datei des Editors Retext in Arbeit.<br />

dem Handgelenk bedienen lässt. Abbildung<br />

1 zeigt das Retext-Fenster mit der<br />

geöffneten Datei changelog.md aus dem<br />

Paket selbst. Um die Instant-<strong>Vorschau</strong><br />

auf der rechten Seite des Fensters zu aktivieren,<br />

klicken Sie auf Bearbeiten | Live-<br />

<strong>Vorschau</strong> oder benutzen das Tastenkürzel<br />

[Strg]+ [L]. Dann rendert die Software das<br />

Dokument und präsentiert es so, wie es<br />

später in exportierten Formaten zu sehen<br />

ist. Falls Ihnen das geteilte Fenster<br />

nicht gefällt, schalten Sie in einer einteili-<br />

gen Ansicht mit [Strg]+[E] zwischen<br />

Quelltext und <strong>Vorschau</strong> hin und her.<br />

Beim Schreiben zeigt sich deutlich,<br />

wie genügsam Markdown ist: Eine Leerzeile<br />

genügt, um einen Absatz zu definieren,<br />

ein Asterisk erzeugt einen Eintrag<br />

für eine Liste, und zwei Rauten markieren<br />

eine Überschrift der zweiten Ebene.<br />

Um einen Vergleich zu haben, wie<br />

das Ganze als HTML-Quelltext aussehen<br />

würde, klicken Sie auf Bearbeiten | HTML-<br />

Code anzeigen.<br />

Installation<br />

Die aktuelle 4er-Serie von Retext steht in den Paketquellen von Debian<br />

„Jessie“ und Ubuntu „Saucy“ bereit, außerdem finden sich offizielle<br />

Pakete für OpenSuse. Nebenbei baut der OpenSuse-Entwickler<br />

Huaren Zhong ein Paket für Fedora, das aber im Test fehlende Abhängigkeiten<br />

rügte und nur mangelhaft an Fedoras Eigenheiten angepasst<br />

war, sodass es nur eingeschränkt bis gar nicht funktionierte.<br />

Wie so oft bleibt Ihnen in solchen Fällen nichts anderes übrig, als das<br />

Programm aus den Quellen zu installieren. Zu kompilieren gibt es dabei<br />

nichts, denn die Software ist in Python geschrieben. Sie akzeptiert<br />

dabei nur die Version 3 des Interpreters; das immer noch gängige<br />

Python 2 genügt nicht. Den Tarball des aktuellen Releases 4.1.1 finden<br />

Sie im Web û und auf dem Datenträger der LU-Media-Edition.<br />

Für die Installation aus den Quellen benötigen Sie die Entwicklerdateien<br />

von Python 3, das Paket mit den Qt4-Bindings sowie pythonmarkups<br />

û. Für den Export in diverse Formate brauchen Sie weiterhin<br />

die python-docutils, für die eingebaute Rechtschreibprüfung<br />

python-enchant. Nähere Auskünfte erteilt die Datei README im Tarball.<br />

Denken Sie daran, dass die Python-Module ebenfalls für die Version<br />

3 erstellt sein müssen. Zum Einrichten des eigentlichen Programms<br />

genügt der Python-typische Zweischritt:<br />

$ python3 ./setup build<br />

$ python3 ./setup install<br />

Alle notwendigen Dateien landen daraufhin unterhalb von /usr/local.<br />

Retext liefert keine Desktop-Datei mit, sodass Sie nirgends einen<br />

Menüpunkt dazu finden. Das Programm starten Sie im Terminal<br />

oder einem Schnellstartfenster mit dem Befehl retext – gegebenenfalls<br />

mit dem vollen Pfad /usr/local/bin/retext, falls sich<br />

dieses Verzeichnis nicht im Suchpfad für Binaries befindet.<br />

03.2014 www.linux-user.de<br />

55


Praxis<br />

Retext<br />

2 Auch Tabellen, Bilder und andere Formatierungen sind machbar, sprengen aber sichtlich<br />

den Rahmen von Markdown.<br />

Sonderzeichen im Text bringen mitunter<br />

die Exportfunktionen ins Trudeln. Um so<br />

etwas wie ein Dollarzeichen, ein Grad-<br />

Zeichen oder etwas Ähnliches einzufügen,<br />

klicken Sie auf die rechte Auswahl<br />

namens Symbole. Allerdings sind die Namen<br />

nicht übersetzt und orientieren sich<br />

an dem Inhalt der Tags, sodass Probieren<br />

über Studieren geht.<br />

Zudem schaut der Quelltext nun nicht<br />

mehr so wie ein einfacher Klartext aus,<br />

sondern eher nach regulärem HTML-<br />

Code. Hier stößt Markdown an natürliche<br />

Grenzen. Bei allem Respekt vor diesen<br />

eigentlich recht nützlichen Erweiterungen<br />

ist damit das bevorzugte Einsatzgebiet<br />

eines Markdown-Editors bereits<br />

überschritten.<br />

Die Alternative<br />

Doch etwas mehr<br />

Neben den grundlegenden Formatierungen<br />

stehen in Retext einige Erweiterungen<br />

bereit, die nicht zum Portfolio der<br />

Markdown-Syntax gehören. Um sie zu<br />

nutzen, braucht es aber etwas mehr als<br />

nur ein paar zusätzliche Zeichen. Eine<br />

einfache Tabelle beispielsweise sieht die<br />

Markdown-Syntax nicht ohne Weiteres<br />

vor, es braucht dazu die bekannten Tags<br />

in spitzen Klammern. Abbildung 2 zeigt<br />

ein Beispiel, das ein wenig mit den auswählbaren<br />

Formatierungen spielt. Das<br />

Bild erscheint nur dann korrekt in der<br />

<strong>Vorschau</strong>, wenn es sich im gleichen Ordner<br />

wie das Dokument selbst befindet.<br />

Im Test gelang zuweilen auch die Angabe<br />

des vollen Pfades zur Bilddatei.<br />

Aber es ist für den Export ohnehin besser,<br />

das Bild im gleichen Ordner vorrätig<br />

zu haben, damit es beim Kopieren Ihres<br />

Schriftstücks an einen anderen Speicherort<br />

Beachtung findet und nicht verloren<br />

geht. Die Spezial-Tags finden sich nicht<br />

im Menü – klicken Sie dazu auf die Auswahl<br />

Stichworte oben rechts im Programmfenster.<br />

Das Format ReStructuredText (RST) hilft<br />

hier unter Umständen, den Quelltext<br />

wieder etwas leserlicher zu gestalten, da<br />

sich seine Formatierungen deutlich von<br />

der Markdown-Syntax unterscheiden.<br />

Öffnen Sie mit [Strg]+[N] ein neues Dokument.<br />

Dieses erscheint in einem neuen<br />

Reiter. Die Syntax schalten Sie im<br />

Menü Bearbeiten | Default Markup | Re-<br />

StructuredText um 3 .<br />

Zwar stehen nun die Listen Stichworte<br />

und Symbole nicht mehr bereit, da das<br />

ReStructuredText-Format derartige Erweiterungen<br />

nicht kennt, aber dafür<br />

besteht die Möglichkeit, etwas mit den<br />

Standardformatierungen zu spielen.<br />

Besonders mit URLs geht RST etwas<br />

genügsamer um als Markdown.<br />

Zwar haben beide Sprachen den Anspruch,<br />

für gut leserliche Quelltexte zu<br />

sorgen. Bei den URLs hat die alternative<br />

Syntax RST aber die Nase leicht vorn.<br />

Export<br />

3 Ein Ausflug in eine andere Syntax lohnt, wenn Markdown nicht die notwendigen<br />

Funktionen mitbringt.<br />

Außer der auf dem HTML-Export basierenden<br />

<strong>Vorschau</strong> im Programmfenster<br />

speichert das Programm die Daten auf<br />

Wunsch noch in den Formaten PDF und<br />

ODT oder generiert eine komplette<br />

Struktur in HTML für Webseiten. Die Exportfunktionen<br />

erreichen Sie im Menü<br />

Datei | Exportieren.<br />

56 www.linux-user.de<br />

03.2014


Retext<br />

Praxis<br />

Retext 4.1.1<br />

LU/retext/<br />

4 Schon in diesen wenigen Zeilen ist ein Einrückungsfehler enthalten.<br />

So weit, so gut – jedoch funktionierte<br />

nur der Export nach HTML in Retext fehlerfrei.<br />

Wie Sie in Abbildung 4 sehen,<br />

war bereits der Export der einfachen Datei<br />

mit dem Text aus Abbildung 3 nach<br />

ODF für das Programm eine schier unüberwindbare<br />

Hürde.<br />

Der PDF-Export sah wesentlich besser<br />

aus, er enthielt zumindest keinerlei Fehler.<br />

Auch das Papierformat gab die Software<br />

richtig als DIN A4 aus, statt etwa<br />

US-Letter zu verwenden.<br />

Alles in allem ist nur HTML erste Wahl,<br />

wie auch schon die HTML-<strong>Vorschau</strong> im<br />

Programmfenster beweist. Die anderen<br />

Formate unterstützt die Software entweder<br />

nur fehlerhaft oder unzureichend.<br />

Fazit<br />

Markdown kann etablierte Markup-Sprachen<br />

nicht ganz ersetzen – das braucht<br />

es aber auch nicht. Wäre tatsächlich der<br />

Funktionsumfang von Docbook das Ziel,<br />

ginge unweigerlich der Vorteil der besseren<br />

Lesbarkeit verloren. Umfangreiche<br />

Formatierungen mithilfe der bereitstehenden<br />

Erweiterungen stellen heute<br />

schon das Konzept infrage.<br />

Retext als hochspezialisierter Editor<br />

schließt eine Lücke und gefällt besonders<br />

durch seine Instant-<strong>Vorschau</strong>. Als<br />

Ersatz für einen einfachen HTML-Editor<br />

taugt Retext ebenfalls, aber Ähnliches<br />

vermögen auch Textverarbeitungen wie<br />

LibreOffice Writer oder Calligra Word zu<br />

leisten (die allerdings Markdown-Dateien<br />

nicht als Klartext öffnen).<br />

Zu bemängeln wäre auch noch, dass<br />

Retext abgesehen von den HTML-ähnlichen<br />

Sonder-Tags keine direkte Hilfestellung<br />

bei der Syntax gibt. Das Programm<br />

setzt auf alle Fälle Grundwissen in Markdown<br />

voraus, zumal ein Handbuch noch<br />

fehlt. Die Zukunft von Retext steht und<br />

fällt mit den Möglichkeiten der zugrundeliegenden<br />

Sprachen. (agr) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 32132<br />

03.2014 www.linux-user.de<br />

57


Praxis<br />

Inkscape<br />

Kreative Inkscape-Effekte in der Praxis<br />

Digitale<br />

Kunst<br />

© Nailia Schwarz, 123RF<br />

Das Vektorzeichenprogramm<br />

Inkscape beherrscht nicht<br />

nur spröde Bleistift- oder<br />

Tuschelinien: Es imitiert bei<br />

Bedarf die Pinselschwünge<br />

eines alten Ölgemäldes.<br />

Peter Kreußel<br />

Readme<br />

Dem umfassenden Inkscape-Handbuch û<br />

fehlt das Quäntchen kreative Inspiration für<br />

eigene Arbeiten. An dieser Stelle setzt dieser<br />

Artikel an, der an konkreten Beispielen<br />

den Umgang mit einigen verblüffend effektvollen<br />

Funktionen fortführt.<br />

Der erste Artikel dieser zweiteiligen<br />

Serie stellte in LU 01/​2014 û die Effekt-<br />

Trickkiste des führenden freien Vektorzeichenprogramms<br />

Inkscape vor. Der<br />

vorliegende zweite Teil verrät, wie Sie<br />

mit den darin vorgestellten Techniken<br />

ein paar echte Kunstwerke erschaffen.<br />

Einstieg<br />

Als Erstes erzeugen Sie ein leicht orientalisch<br />

anmutendes, goldenes Durchbruchsmuster<br />

(Abbildung 1 , rechts unten).<br />

Das klappt mit Inkscape erstaunlich<br />

einfach: Für die verschlungenen Formen<br />

sorgt ein Foto eines persischen Wandmosaiks<br />

û (links oben), das Inkscape<br />

mit seinen Bordmitteln vektorisiert<br />

(rechts oben). Die in der Bilddatenbank<br />

gehostete Datei ist für unsere Zwecke zu<br />

groß, weswegen Sie sie vorab via Gimp<br />

auf 1000 Pixel Breite eindampfen.<br />

Die Vektorisieren-Funktion (Pfad | Bitmap<br />

vektorisieren) verwandelt das güldene<br />

Arabesken-Muster in wenigen Mausklicks<br />

zu einer mit Inkscape bearbeitbaren<br />

Vektorform 2 . Das Erkennen von<br />

Formen auf Fotos ist für den Computer –<br />

anders als für das menschliche Gehirn –<br />

eine Herausforderung. Bei richtiger Anwendung<br />

liefert der Inkscape-Vektorisierer<br />

meist brauchbare Ergebnisse.<br />

Glücklicherweise handelt es sich beim<br />

Vorlagenfoto trotz der Feingliedrigkeit<br />

der Formen um ein einfach zu konvertierendes<br />

Bild, da der Kontrast zwischen<br />

dem blauen Hintergrund und dem gelben<br />

Muster recht deutlich ausfällt. Den<br />

rechenintensiveren Kantenerkennungsalgorithmus<br />

(Abbildung 2 : zweite,<br />

nicht gewählte Option), der die Umrisse<br />

in Bildern mit vielen ähnlich gefärbten<br />

Elementen herausschält, benötigen Sie<br />

in diesem Fall nicht.<br />

Der Basis-Vektorisierungsmodus Entlang<br />

eines Helligkeitswertes mit einem<br />

Schwellwert von 0,45 genügt, um die<br />

gelben Mosaikelemente zu erfassen. Der<br />

türkis gefärbte Part fällt größtenteils unter<br />

den Tisch, doch das passt ganz gut,<br />

damit das entstandene Muster (Abbildung<br />

1 , rechts oben) nicht zu dicht<br />

58 www.linux-user.de<br />

03.2014


Inkscape<br />

Praxis<br />

ausfällt. Dieser Modus des Vektorisierers<br />

liefert ein einfarbiges Element. Das Inkscape-Handbuch<br />

erläutert, wie Sie mit<br />

ihm außerdem mehrfarbige Ergebnisse<br />

generieren û.<br />

Viele Details<br />

Die Komplexität der beim Vektorisieren<br />

entstehenden Pfade stellt eine der Herausforderungen<br />

beim Erfassen von Bitmaps<br />

dar: Leicht gerät dabei die Zahl der<br />

Knoten so groß, dass Inkscape Minuten<br />

braucht, um sie anzuzeigen. Dem steuern<br />

die Glättungseinstellungen im Reiter<br />

Optionen entgegen: Flecken unterdrücken<br />

filtert Elemente heraus, die unter<br />

der angegebenen Größe liegen. Im vorliegenden<br />

Beispiel hat sich eine Einstellung<br />

von 10 Pixeln bewährt.<br />

Bei Ecken glätten und Pfade optimieren<br />

wählen Sie für ein möglichst glattes und<br />

nicht zu komplexes Resultat die Maximalwerte<br />

von 1,34 und 5,00. Dabei fallen<br />

noch mehr als genug Details zum Anwenden<br />

von verschiedenen Filtereffekten<br />

an, die dann in der Folge die Formen<br />

ohnehin weiter abschleifen.<br />

Die Vektortransformation liefert zunächst<br />

ein Negativabbild des Durchbruchsmusters.<br />

Optional drehen Sie es<br />

durch das Setzen des Kontrollkästchen<br />

Bild invertieren im Reiter Modus wieder<br />

um. Allerdings wirkt das Endergebnis<br />

optisch kompakter, wenn am Rand des<br />

Musters ein dunkler Rand bleibt.<br />

Daher invertieren Sie die Form nicht<br />

im Dialog Vektorisieren, sondern zeichnen<br />

stattdessen ein Rechteck, welches<br />

das Muster bis auf einen Rand überdeckt.<br />

Nach der Auswahl beider Elemente<br />

invertiert Pfad | Exklusiv-Oder den vom<br />

Rechteck überdeckten Bereich. Am Rand<br />

bleibt dabei der schmale Streifen des<br />

dunkleren Negativs stehen.<br />

Perlmutt<br />

Den Rest erledigen die leistungsfähigen<br />

Filtereffekte von Inkscape: Filter | Wölbung<br />

| Fettes Öl überzieht die flachen<br />

Formen quasi mit einer räumlich ausgeformten<br />

Ölschicht und sorgt so für eine<br />

Pseudo-3D-Schattierung. Filter | Materialien<br />

| 3D-Mutter der Perlen überzuckert<br />

das Muster mit schillerndem Perlmutt.<br />

1 Aus einem vektorisierten<br />

Foto machen die<br />

Filter Fettes Öl und 3d-<br />

Mutter der Perlen ein abstrakt<br />

wirkendes Goldmuster.<br />

03.2014 www.linux-user.de<br />

59


Praxis<br />

Inkscape<br />

In grafisch aufwendigen Designs darf<br />

auch der Text nicht einfach gerade in<br />

Zeilen fließen. Einen ersten Ansatz für<br />

das Spiel mit den Buchstaben bietet die<br />

Inkscape-Funktion Text | An Pfad ausrichten.<br />

Doch sie erinnert ein wenig zu stark<br />

an die Word-Art-Funktion bekannter<br />

Textverarbeitungsprogramme.<br />

Wer Buchstaben wirklich kreativ formen<br />

möchte, kommt nicht darum herum,<br />

die Textobjekte in Vektorformen<br />

umzuwandeln. Dann steht der kreativen<br />

Fantasie die ganze reichhaltige Palette<br />

der Inkscape-Pfadeffekte bereit 3 .<br />

Sie konvertieren die Schrift daher zunächst<br />

mit Pfad | Objekt in Pfad umwandeln<br />

in eine Vektorform. Danach liegt der<br />

Text als Gruppe aus Pfaden vor, auf die<br />

sich allerdings immer noch keine Pfadeffekte<br />

anwenden lassen. Daher lösen Sie<br />

mit [Strg]+[U] die Gruppe auf und kombinieren<br />

anschließend die nun als einzelne<br />

Objekte ausgewählten Buchstaben<br />

mit [Strg]+[K] zu einem einzigen Pfad.<br />

Dieser lässt sich nun mithilfe der Hüllen-Verformung<br />

unter Pfad | Pfadeffekte<br />

so frei kneten, dass die Text-Art von typischen<br />

Textverarbeitungen dagegen alt<br />

aussieht: Bei der Hüllen-Verformung legen<br />

vier mit dem Knoten-Werkzeug wie<br />

gewöhnliche Bézier-Kurven bearbeitbare<br />

Pfade die Deformation des rechten,<br />

linken, oberen und unteren Bereichs des<br />

Objekts gesondert fest (Abbildung 3 ,<br />

Punkt 2). Diese sogenannten Hüllkurven<br />

lassen sich im Dialog Pfad-Effekte gesondert<br />

aktivieren 4 .<br />

Trotz der kreativen Deformation des<br />

Gesamtobjekts bleiben die Umrisse der<br />

Schrift immer noch schmucklos glatt.<br />

Für Abhilfe sorgt die Inkscape-Erweiterung<br />

Pfad modifizieren | Knoten zittrig<br />

verteilen (Abbildung 3 , Punkt 3). Damit<br />

sie wirkt, müssen Sie zunächst das mithilfe<br />

eines Live-Pfadeffekts deformierte<br />

Objekt erneut mit Pfad | Objekt in Pfad<br />

umwandeln in einen statischen Pfad verwandeln.<br />

Die sonst durchgängig („live“)<br />

verfügbar bleibende Veränderbarkeit<br />

der vier Hüllkurven endet damit, doch<br />

vorher lässt sich die Form nur mit weiteren<br />

Live-Effekten, nicht aber mit gewöhnlichen<br />

Erweiterungen traktieren.<br />

Knoten zittrig verteilen wirkt zudem<br />

nur wie gewünscht, wenn Sie vorher<br />

noch über Pfad modifizieren | Knoten hinzufügen<br />

dem Objekt in gleichmäßigen<br />

Abständen verteilte Knoten hinzufügen.<br />

Für die in der Abbildung zu sehende<br />

leichte Unregelmäßigkeit eignen sich<br />

die Einstellungen in max. Segmentlänge<br />

und 15,0 Pixel Abstand. Knoten zittrig<br />

verteilen mit einer Maximalen Verschiebung<br />

von 1 in beide Richtungen sowie<br />

das Aktivieren von Knoten verschieben<br />

und Knotenanfasser verschieben sorgen<br />

dann für den lebendigen Handmade-<br />

Effekt (Abbildung 3 , Punkt 3).<br />

2 Mit diesen Einstellungen von Bitmap vektorisieren<br />

gelingt das Tracen des persischen Wandmosaiks.<br />

3 Nach dem Umwandeln eines<br />

Schriftzugs in ein Vektorelement sind<br />

der Fantasie kaum Grenzen gesetzt.<br />

Flammende Worte<br />

Fügen Sie mit einem Mausklick noch einen<br />

passenden Filter hinzu (im Beispiel<br />

Wölbung | Neon), wirkt die Schrift schon<br />

recht apart (Abbildung 3 , unten). Als<br />

Erweiterung fügen Sie im nächsten<br />

Schritt der Schrift einen feurigen Bitmap-Hintergrund<br />

als Füllung zu 5 ).<br />

Dazu kommt die Maskieren-Funktion<br />

von Inkscape zum Einsatz ( Objekt | Maskierung<br />

| setzen). Während ein Beschnittpfad<br />

das hinterlegte Bild nur zuschneidet,<br />

prägt eine Maske dem Ausschnitt<br />

zusätzlich eine mit dem Helligkeitswert<br />

der Schnittvorlage korrespondierende<br />

Transparenz auf. Schwarze Stellen der<br />

60 www.linux-user.de<br />

03.2014


Inkscape<br />

Praxis<br />

4 Nach einem Klick auf eines der rot<br />

markierten Knotenwerkzeug-Icons erscheint<br />

einer der vier Hüllenkurven-Pfade,<br />

der sich wie ein gewöhnlicher Vektorpfad<br />

formen lässt.<br />

Maske resultieren in vollständiger Transparenz,<br />

weiße Bereiche bleiben undurchsichtig.<br />

Darum ist der räumlichen<br />

Effekt, den der Filter dunkles Glas dem<br />

nun weißen <strong>LinuxUser</strong>-Schriftzug hinzufügt,<br />

auch im Ergebnis noch erkennbar.<br />

Importieren Sie zunächst die Bitmap<br />

[5] in das Inkscape-Dokument, die<br />

als Hintergrund für die Schrift dienen<br />

soll. Platzieren Sie den Schriftzug über<br />

dem Hintergrund, wählen Sie Hintergrund<br />

und Schrift aus, und wenden Sie<br />

dann Objekt | Maskierung | setzen an. Damit<br />

die wegen der Maske teiltransparente<br />

Schrift vor dem Hintergrund gut sichtbar<br />

bleibt, hinterlegen Sie noch eine effektlose,<br />

weinrote Kopie des Schriftzugs.<br />

Die Veränderung kann linear oder exponentiell<br />

erfolgen, aber auch zufällig<br />

(Abbildung 6 , dritte Zeile).<br />

Auf Wunsch dreht und spiegelt die<br />

Klonen-Funktion die Objekte bei jedem<br />

Vervielfältigungsschritt (Abbildung 6 ,<br />

vierte Zeile). Wie Wikipedia anschaulich<br />

erläutert û, gibt es 17 Möglichkeiten,<br />

durch Transformation, Rotation und<br />

Spiegelung regelmäßige periodische<br />

Muster in der Ebene zu erzeugen. Inkscape<br />

setzt alle Symmetrieschemata um<br />

(Reiter Symmetrie im Werkzeugdialog).<br />

Sogar den Hintergrund der Grafik bezieht<br />

das Klon-Werkzeug in die Berechnung<br />

ein: Abbildung 7 zeigt einen Rastereffekt<br />

auf der Basis der Helligkeit einer<br />

hinterlegten Bitmap. Horizontal und<br />

vertikal wechselnde Färbung und Sättigung<br />

der kleinen Rechtecke fügen dem<br />

Schwarz-Weiß-Foto etwas Farbenspiel<br />

hinzu. Der Zufallsgenerator dreht die<br />

Objekte um maximal 10 Prozent und<br />

variiert deren Abstand um bis zu 20 Prozent,<br />

sodass sie nicht maschinell-regelmäßig,<br />

sondern wie per Hand ausge-<br />

Nicht-identische Klone<br />

Das letzte Beispiel beruht auf dem Inkscape-Werkzeug<br />

Gekachelte Klone erzeugen<br />

im Menü Bearbeiten | Klonen. In der<br />

Grundeinstellung erzeugt es Paletten<br />

aus gleichmäßig angeordneten Objekten<br />

(Abbildung 6 , oben). Doch Inkscape<br />

variiert auf Wunsch zahlreiche<br />

Parameter: Etwa die Weite der Verschiebung,<br />

Farbe, Größe, Rotation, Transparenz<br />

oder Schärfe progressiv in X- oder<br />

Y-Richtung (Abbildung 6 , zweite Zeile).<br />

5 Als Transparenzmaske beschneidet der <strong>LinuxUser</strong>-Schriftzug den roten Bitmap-<br />

Hintergrund.<br />

03.2014 www.linux-user.de<br />

61


Praxis<br />

Inkscape<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 30976<br />

streut wirken. Deckkraft und Größe der<br />

Rechtecke folgen hingegen der Helligkeit<br />

des verwendeten Fotos.<br />

Punkt für Punkt<br />

Das mit dem Kartoffelstempel-Muster<br />

überdeckte Foto misst 725 mal 875 Pixel.<br />

Ein Rechteck der Größe 7 mal 7 Pixel am<br />

linken oberen Fotorand dient als Basis<br />

für das Raster in Abbildung 7 . Das Klonen-Werkzeug<br />

kann die Farbe nur dann<br />

verändern, wenn sowohl die Farbe als<br />

auch die Füllung den Wert Ungesetzt<br />

aufweisen. Das erreichen Sie, indem Sie<br />

im Dialog Füllung und Kontur für Füllung<br />

und Kontur das Fragezeichen-Icon wählen<br />

8 . Öffnen Sie nun den DialogBearbeiten<br />

| Klonen | Gekachelte Klone erzeugen,<br />

während das kleine Quadrat noch<br />

aktiv ist. Im Reiter Symmetrie des Werkzeugs<br />

Gekachelte Klone erzeugen wählen<br />

Sie oben im Reiter eine einfache Verschiebung<br />

ohne Rotation oder Spiegelung.<br />

Für die richtige Dichte des Rasters stellen<br />

Sie im Reiter Verschiebung pro Spalte<br />

100 Prozent X-Verschiebung ein, den gleichen<br />

Wert wählen Sie für die Y-Verschiebung<br />

pro Reihe, plus einen Zufallsfaktor<br />

von 20 Prozent in beiden Fällen 9 .<br />

Wenn Sie nun unten im Dialog für die<br />

Reihen- und Spaltenzahl 65 und 55 eintragen<br />

und auf Erzeugen klicken, entsteht<br />

ein leicht unregelmäßiges Muster,<br />

das die Bitmap vollständig überdeckt.<br />

Um mehr Abwechslung ins Spiel zu<br />

bringen, tragen Sie im Reiter Rotation für<br />

den Winkel einen Zufallsfaktor von<br />

10 Prozent ein. Unter Maßstab wählen<br />

Sie für die X-Skalierung und Y-Skalierung<br />

jeweils pro Reihe und pro Spalte einen<br />

Wert von -0,3 Prozent, sodass die Farbtupfer<br />

zum rechten unteren Rand hin<br />

etwas schrumpfen.<br />

Farbtupfer<br />

Im Reiter Farbe klicken Sie auf das kleine<br />

Farbfeld ursprüngliche Farbe und stellen<br />

eine türkise Tönung ein. Im Beispiel variiert<br />

diese Grundfarbe, und zwar die<br />

Farbtönung ( Zeile H für „hue“ im Reiter<br />

Farbe, Abbildung 9 ) um 1 Prozent pro<br />

Reihe und um minus -1 pro Spalte, plus<br />

7 Da das Kachelklon-<br />

Werkzeug auch auf den<br />

Helligkeitsverlauf einer<br />

Bitmap reagiert, lassen<br />

sich mit ihm optisch interessante<br />

Rastereffekte<br />

erzeugen.<br />

6 Das Kachelklon-Werkzeug vervielfältigt<br />

Zeichenobjekte und variiert dabei<br />

viele Parameter der Klone.<br />

8 Damit das Kachelklon-<br />

Werkzeug die Farbe verändert,<br />

muss sie im Basisobjekt<br />

undefiniert bleiben.<br />

62 www.linux-user.de<br />

03.2014


Inkscape<br />

Praxis<br />

einem Zufallsfaktor von 10 Prozent. Die<br />

Sättigung (S) nimmt im Beispiel sowohl<br />

pro Reihe als auch pro Spalte um -1 Prozent<br />

ab. Wenn Sie nach Eingabe dieser<br />

Werte auf Erzeugen klicken, erscheint<br />

wie in Abbildung 7 ein gefärbtes Raster<br />

über dem Bitmap.<br />

Allerdings folgt die Größe der Rasterpunkte<br />

noch nicht der Helligkeit des Fotos.<br />

Dafür zeichnet der Reiter Bild vektorisieren<br />

zuständig: Schalten Sie die Funktion<br />

mit der Option Zeichnung unter den<br />

Kacheln vektorisieren ein. Die Einstellung<br />

1. Von der Zeichnung übernehmen belassen<br />

Sie auf Farbe, denn diese Eigenschaft<br />

des Fotos soll die Größe der Rasterpunkte<br />

steuern. Bei einem Schwarz-Weiß-Bild<br />

hätte die Einstellung L („luminance“, Helligkeit)<br />

genau denselben Effekt.<br />

Unter 2. Übernommenen Wert feinjustieren<br />

sorgt beim Beispielfoto eine Gammakorrektur<br />

von 3 für einen sinnvoll skalierten<br />

Einfluss der Fotohelligkeit auf das<br />

Raster. Unter 3. Wert auf die Klone anwenden<br />

ergibt die Auswahl von Größe und<br />

Deckkraft einen gut wahrnehmbaren<br />

Rastereffekt.<br />

Mit dem Kachelklon-Werkzeug lassen<br />

sich theoretisch auch Raster für den Vierfarbendruck<br />

erzeugen. In unserem Beispiel,<br />

das die Bildhelligkeit mit nach Position<br />

variierten und zufälligen Werten<br />

überlagert, geht es ja aber nicht um eine<br />

korrekte Farbwiedergabe. Vielmehr reichern<br />

die Türkis- und Lilatöne das<br />

Schwarz-Weiß-Bild mit ein paar nach ästhetischen<br />

Gesichtspunkten ausgewählten<br />

Farbtupfern an.<br />

Bloß ein Anfang<br />

Mit den Filtern, Transparenzmasken, der<br />

Hüllenkurven-Deformation und der Knoten<br />

zittrig verteilen-Erweiterung sowie<br />

dem Kachelklon-Werkzeug streift dieser<br />

Artikel einige wichtige Inkscape-Funktionen<br />

mit künstlerischem Potenzial, jedoch<br />

längst nicht alle. Ein ausgesprochenes<br />

Plus des SVG-Editors Inkscape: Alle<br />

drei vorgestellten Beispiele lassen sich<br />

nach dem Speichern ins Format normales<br />

SVG auflösungsunbhängig und ohne<br />

Abstriche bei den Effekten in modernen<br />

Webbrowsern öffnen. (tle) n<br />

9 Diese Einstellungen<br />

des Werkzeugs<br />

Gekachelte Klone erzeugen<br />

erzeugen aus<br />

dem kleinen schwarzen<br />

Quadrat links<br />

oben in Abbildung 7<br />

das farbige Raster<br />

über dem Foto.<br />

03.2014 www.linux-user.de<br />

63


Im Test<br />

Insync Plus<br />

Insync Plus synchronisiert Google-Drive-Dateien auf dem Desktop<br />

Wolkiger Speicher<br />

© Alexander Bedrin, 123RF<br />

Google Drive fehlt ein Desktop-Client<br />

für die automatische<br />

Synchronisation. Die<br />

Firma Insync schließt nun<br />

diese Lücke. Dr. Karl Sarnow,<br />

Thomas Leichtenstern<br />

Readme<br />

Die Firma Insync offeriert einen Google-<br />

Drive-Desktop-Client für Linux, Mac OS X<br />

und Windows. Wir haben die 15 US-Dollar<br />

teure Linux-Version von Insync Plus unter<br />

Ubuntu 12.04 LTS getestet.<br />

Google bietet mit seinem Speicherdienst<br />

Drive û 15 GByte kostenlosen<br />

Online-Speicher an – deutlich mehr als<br />

etwa Dropbox û, das in der kostenfreien<br />

Variante lediglich 2 GByte bereitstellt.<br />

Allerdings verfügt Dropbox über einen<br />

Client für alle gängigen Plattformen, der<br />

lokale Verzeichnisse mit dem Speicher in<br />

der Datenwolke synchronisiert – ein solcher<br />

fehlt bei Google.<br />

In diese Bresche springt der Drittanbieter<br />

Insync û, der für Linux û, Mac<br />

OS X und Windows einen entsprechenden<br />

Client anbietet. Für Linux offeriert<br />

Insync DEB-Pakete für Debian und<br />

Ubuntu sowie ein RPM für Fedora, das<br />

im Test aber auch unter OpenSuse 12.3<br />

problemlos funktionierte.<br />

Allerdings unterliegt die Software einer<br />

proprietären Lizenz und kostet in der<br />

Plus-Version pro genutztem Google-Account<br />

einmalig 15 US-Dollar. Die Pro-Variante<br />

schlägt mit jährlich 15 US-Dollar<br />

zum Einbinden von drei Accounts zu Buche,<br />

für jedes weitere Konto fallen 5 US-<br />

Dollar Aufschlag an û.<br />

Installation<br />

Um die Software unter Ubuntu zu installieren,<br />

wählen Sie auf der Downloadseite<br />

des Projekts das entsprechende Paket<br />

aus und installieren es wie gewohnt via<br />

Ubuntu Software Center. Beim anschließenden<br />

Setup müssen Sie der Software<br />

als Erstes die Erlaubnis erteilen, auf Ihren<br />

Google-Drive-Account zuzugreifen 1 .<br />

Im Advanced Setup geben Sie den lokalen<br />

Speicherort vor, aktivieren die<br />

Nautilus-Integration und legen fest, wel-<br />

64 www.linux-user.de<br />

03.2014


Insync Plus<br />

Im Test<br />

che Dateien und Ordner die Software<br />

synchronisieren soll 2 . Kurz nach der<br />

Installation meldet sich die Insync-Helpline<br />

per E-Mail, und bietet Hilfe bei eventuellen<br />

Problemen an.<br />

Im Betrieb<br />

Nach Abschluss des Setups erfolgt die<br />

einmalige Synchronisation vom Server<br />

zum Client; in der Kontrollleiste erscheint<br />

das Insync-Icon. Von nun an arbeitet<br />

die Software im Hintergrund und<br />

markiert durch ein grünes Häkchen im<br />

Ordner unter Nautilus den erfolgreichen<br />

Datenabgleich 3 . Während einer Synchronisation<br />

erscheint stattdessen das<br />

blaue Kreisverkehr-Symbol.<br />

Über das Kontextmenü des jeweiligen<br />

Ordners greifen Sie direkt auf Google<br />

Drive zu oder teilen den Ordnerinhalt<br />

mit anderen Nutzern. Sofern die Dokumente<br />

mit Google Docs erstellt wurden,<br />

synchronisiert die Software in der<br />

Grundeinstellung jedoch nicht diese<br />

selbst, sondern legt lediglich Links zu<br />

den Originalen an. Offline stehen die<br />

Dokumente entsprechend nicht zur Verfügung.<br />

Ein Doppelklick auf einen Verweis<br />

mit der Endung .gddoc (Dokumente)<br />

und .gdsheet (Tabellen) öffnet folglich<br />

das entsprechende Dokument im<br />

bevorzugten Webbrowser.<br />

Ein Blick in die Settings der Software<br />

zeigt aber, dass sich der Eintrag Do not<br />

automatically convert Google format files<br />

(e.g. Docs) deaktivieren lässt. Dann lädt<br />

die Applikation die mit Google Docs erstellten<br />

Dateien herunter und konvertiert<br />

Textdateien in das ODT-Format, Tabellen<br />

nach ODS, Präsentationen nach PPTX<br />

und Grafiken ins SVG-Format. Der Versuch,<br />

ein derartiges Dokument lokal zu<br />

verändern, endete allerdings mit einem<br />

Hinweis auf eine gescheiterte Synchronisation.<br />

Nach dem Löschen des Online-<br />

Pendants löschte die Software im Test<br />

auch den konvertierten ODT-Ableger.<br />

Um echte Cloud-Funktionalität zu<br />

nutzen, gilt es entsprechend, Dokumente<br />

und Bilder auf dem lokalen Rechner<br />

zu erzeugen statt via Google Docs. Speichern<br />

Sie solche Dateien im Insync-Ordner,<br />

erfolgt die automatische Synchroni-<br />

1 Bei der Installation erwartet die Software die Erlaubnis, auf die Daten Ihres Google-<br />

Drive-Kontos zuzugreifen.<br />

sation mit dem Google-Server. Das erzeugte<br />

Dokument lässt sich dann zwar<br />

mit Google Docs öffnen, Änderungen<br />

landen jedoch nicht im fraglichen Dokument,<br />

sondern stattdessen in einer neuen<br />

Google-Docs-Datei.<br />

2 Im letzten Schritt des Advanced Setups legen Sie die zu synchronisierenden Ordner<br />

und Dateien fest.<br />

03.2014 www.linux-user.de<br />

65


Im Test<br />

Insync Plus<br />

Multi-Accounting<br />

Klicken Sie auf das Insync-Icon in der<br />

Statusleiste, dann zeigen sich die weiteren<br />

Möglichkeiten, die der Insync-Plus-<br />

Client bietet 4 . Insbesondere die Synchronisation<br />

mehrerer Google-Accounts<br />

sticht an dieser Stelle hervor. Diese lassen<br />

sich dann in verschiedenen Insync-<br />

Ordnern unterbringen.<br />

Falls Sie es wünschen, können Sie die<br />

verschiedenen Konten nach dem Synchronisieren<br />

auch wieder deaktivieren<br />

und damit einen weiteren Abgleich verhindern.<br />

Dafür wechseln Sie im Menü<br />

des Info-Buttons zum entsprechenden<br />

3 Im Dateimanager Nautilus erscheint das Insync genannte Synchronisationsverzeichnis<br />

unter Lesezeichen. Die synchronisierten Ordner zeigen ein grünes<br />

Häkchen. Ein Rechtsklick mit der Maus fördert das Kontextmenü zutage.<br />

Account und klicken auf Status, wo Sie<br />

das Konto bei Bedarf wieder entfernen.<br />

Beachten Sie, dass Sie damit zwar die<br />

Synchronisation unterbrechen und den<br />

Zugang entfernen, der Ordner samt Inhalt<br />

aber erhalten bleibt.<br />

Da Insync einmal eingegebene Konten<br />

nicht mehr vergisst, können Sie diese<br />

jederzeit reaktivieren. Der Client speichert<br />

in einer Historie (Recent changes),<br />

was alles gemacht wurde.<br />

Fazit<br />

Was Dropbox schon lange bietet, liefert<br />

Insync in Form einer Third-Party-App<br />

jetzt auch für Google Drive: einen Client,<br />

der die Daten des Webspeichers mit<br />

dem lokalen Client synchronisiert. Allerdings<br />

leistet der Hersteller sich dabei einige<br />

Ausrutscher.<br />

So erlaubt der Client zwar den Download<br />

von mit Google Docs erstellten Bildern<br />

und Dokumenten, sobald Sie diese<br />

jedoch lokal bearbeiten, kommt die<br />

Software ins Schleudern und verweigert<br />

die Synchronisation. Alternativ lädt sie<br />

nur die Links zu den Dateien herunter,<br />

was nicht sonderlich hilfreich erscheint.<br />

Normale Daten hingegen gleicht das<br />

Programm zuverlässig und flott ab. Anders<br />

als die Clients von Copy.com oder<br />

Dropbox ist Insync Plus sogar in der<br />

Lage, mehrere Benutzerkonten zu verwalten.<br />

Ob diese Funktion jedoch den<br />

Preis von mindestens 15 US-Dollar rechtfertigt,<br />

muss jeder Anwender für sich<br />

selbst entscheiden. (tle) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31502<br />

4 In der Statuszeile<br />

offenbart ein Klick auf<br />

das Insync-Icon weitere<br />

Möglichkeiten.<br />

Besonders interessant:<br />

Sie können weitere<br />

Google-Konten zur<br />

Synchronisation hinzufügen.<br />

Der Autor<br />

Karl Sarnow nutzt Computer<br />

seit den Zeiten des TRS-80.<br />

Via Atari ST, Novell DOS und<br />

OS/​2 landete er bei Suse Linux und migrierte<br />

schließlich zu Ubuntu. Zumindest<br />

vorläufig ist kein Ende seiner Linux-Begeisterung<br />

in Sicht.<br />

66 www.linux-user.de<br />

03.2014


Im Test<br />

Safesquid<br />

Kommerzieller Filterproxy Safesquid<br />

Leicht inkontinent<br />

© Costasz, 123RF<br />

Wer zu Hause sicherer surfen und seine<br />

Kinder vor zweifelhaftem Web-Content<br />

Readme<br />

Safesquid erlaubt unter anderem das komfortable<br />

Konfigurieren über eine webbasierte<br />

grafische Oberfläche. Nützliche Funktionen<br />

wie das Ausfiltern von Schädlingen<br />

und festlegbare Zeiten für das Surfen machen<br />

den Proxy auch für Nutzer interessant,<br />

die ihre Kinder vor ungeeigneten Inhalten<br />

aus dem Web schützen möchten.<br />

schützen möchte, der muss einen entsprechenden<br />

Filter einrichten. Das kommerzielle,<br />

aber für Privatanwender kostenlose<br />

Tool Safesquid bietet alles dazu Notwendige,<br />

zeigt aber kleine Schwächen.<br />

Valentin Höbel<br />

68<br />

www.linux-user.de<br />

03.2014


Safesquid<br />

Im Test<br />

Safesquid bietet einen Proxy für Heimanwender<br />

und kleinere bis mittelgroße<br />

Netzwerke. Sie schalten die Software<br />

zwischen Browser und Internet und<br />

gestalten damit durch eine Reihe von<br />

Inhaltsfiltern (unter anderem auch für<br />

Flash), Domain-Sperrlisten und einen<br />

Malware-Scan das Surfen sicherer. Daneben<br />

bietet Safesquid eine Zugriffskontrolle<br />

durch Webseiten-Kategorien und<br />

Profile sowie eine Bilderkennung von<br />

pornografischem Material.<br />

Durch einen Cache für Webseiten und<br />

Bilder sowie das intelligente Prefetching<br />

von Webseiten beschleunigt das Tool<br />

das Surfen. Für die Konfiguration bietet<br />

es ein komfortables Web-Interface, das<br />

auch das Auswerten von Logs und das<br />

Generieren von Reports ermöglicht. Obwohl<br />

der Name das vermuten ließe, läuft<br />

unter der Haube nicht der Squid-Proxy,<br />

sondern eine in C/​C++ geschriebene<br />

Eigenentwicklung des Herstellers Office<br />

Efficiencies. Für diverse Anwendungsfälle<br />

verwendet Safesquid außerdem Bashund<br />

Perl-<strong>Skripte</strong>.<br />

Der Hersteller stellt die Software sowohl<br />

als kommerzielle als auch freie Version<br />

zur Verfügung. Für Heimanwender<br />

dürfte die kostenlose Variante die interessanteste<br />

sein. Sie unterscheidet sich<br />

von der Bezahlvariante in erster Linie<br />

durch die Beschränkung auf maximal<br />

drei Benutzer. Sollen mehr Anwender<br />

auf die zentral im Heimnetzwerk installierte<br />

Filter-Suite zugreifen, benötigen<br />

Sie kostenpflichtige Variante û. Für den<br />

Einsatz auf dem eigenen Rechner eignet<br />

sich aufgrund der hohen Funktionsvielfalt<br />

die „Composite Edition“.<br />

1 Das textbasierte Installationsskript fragt die wichtigsten Einstellungsparameter ab.<br />

Unter Fedora 19 klappte das Einrichten<br />

auch ohne Vorbereitungen, im Anschluss<br />

startete Safesquid jedoch nicht –<br />

das Installationsskript hatte schlicht das<br />

init.d-Skript falsch kopiert. Ein manueller<br />

Start von Safesquid schlug auf Grund<br />

von Folgefehlern ebenfalls fehl. Da ein<br />

Supporter im Live-Chat auf Ubuntu<br />

12.04 verwies, verwendeten wir diese<br />

Distribution in der 64-Bit-Variante für<br />

den Test. Weitere Versuche ergaben, dass<br />

Safesquid auch mit OpenSuse 12.3<br />

(64 Bit) problemlos zusammenarbeitet.<br />

Mit sudo su ‐ erweitern Sie Ihre Privilegien<br />

für administrativen Zugriff und<br />

wechseln anschließend ins Verzeichnis<br />

/ root/. Damit das Setup reibungslos<br />

funktioniert, installieren Sie vorab via<br />

apt‐get das Paket libgmp3c2. Die darin<br />

enthaltenen Bibliotheken erfüllen einige<br />

vom Installationsskript vorgegebene Abhängigkeiten.<br />

Dann laden Sie Safesquid<br />

Installation<br />

Während der weit verbreitere originale<br />

Proxy-Server Squid auf nahezu jeder Distribution<br />

läuft, gibt sich Safesquid dagegen<br />

äußerst wählerisch in Bezug auf das<br />

darunterliegende System: Wir versuchten<br />

zunächst erfolglos, die Software unter<br />

Ubuntu 13.10 zu installieren. Wie später<br />

der Herstellersupport im Live-Chat<br />

bestätigte, fehlen dafür aber einige Pakete,<br />

die die benötigten Abhängigkeiten<br />

der Installationsskripte abdecken.<br />

2 Um Safesquid<br />

zu nutzen, gilt es,<br />

den Browser entsprechend<br />

zu<br />

konfigurieren.<br />

03.2014 www.linux-user.de


Im Test<br />

Safesquid<br />

von der Download-Seite û als Tarball<br />

herunter und entpacken diesen in ein<br />

geeignetes Verzeichnis.<br />

Anschließend wechseln Sie ins dabei<br />

neu entstandene Verzeichnis /root/<br />

safesquid/ und starten die Installation<br />

via ./install.sh 1 , was den Proxy<br />

letztlich im Verzeichnis /opt/safesquid/<br />

safesquid/safesquid einrichtet. Gehen<br />

Sie die einzelnen Schritte der Einrichtungsroutine<br />

durch, bis Safesquid Ihnen<br />

die geglückte Installation bestätigt. Ein<br />

Druck auf [S] startet den Proxy.<br />

Alternativ starten Sie Safesquid manuell<br />

mit dem Kommando /etc/init.d/<br />

safesquid start. Der Dienst läuft nun<br />

im Hintergrund und lauscht auf<br />

Port 8080. Mit dem Kommando lsof<br />

‐ni:8080 verifizieren Sie, ob sich der<br />

Proxy auf dem vorgesehenen Port erreichen<br />

lässt. Hat alles geklappt, sorgen Sie<br />

anschließend mit dem Kommando update‐rc.d<br />

safesquid default dafür,<br />

dass der Proxy künftig bei jedem Neustart<br />

automatisch mitlädt.<br />

Der Hersteller verlangt, dass Sie die<br />

kostenlose Installation von Safesquid<br />

über das Internet aktivieren. Den Schritt<br />

nehmen Sie, wie die weiterführende<br />

Konfiguration, über die Web-Oberfläche<br />

vor. Starten Sie dazu einen Browser und<br />

tragen Sie in dessen Proxy-Einstellungen<br />

localhost und den Port 8080 ein 2 .<br />

Rufen Sie danach die Adresse http://<br />

safesquid.cfg im Browser auf und klicken<br />

Sie in der Safesquid-Oberfläche auf<br />

About 3 . Auf dieser Seite hinterlegen<br />

Sie Ihre E-Mail-Adresse und den Aktivierungsschlüssel.<br />

Via Submit übertragen<br />

Sie die Daten und aktivieren die Installation.<br />

Danach fordert Sie Safesquid zu<br />

einem Neustart der Software auf.<br />

3 Auch die freie Version des Filterproxys erfordert eine Registrierung beim Hersteller.<br />

70 www.linux-user.de<br />

03.2014


Safesquid<br />

Im Test<br />

Für die sinnvolle Nutzung des Proxys gilt<br />

es, Sperrlisten und ähnliches einzurichten.<br />

Klicken Sie dafür auf der Startseite<br />

der Safesquid-Oberfläche den Link Config.<br />

An dieser Stelle finden Sie ein Ausklappmenü<br />

mit vielen Konfigurationskategorien.<br />

Die erste, Access restrictions,<br />

regelt den Zugriff auf den Proxy selbst.<br />

Anhand verschiedener Kriterien legen<br />

Sie fest, welcher Nutzer oder welches<br />

System Safesquid verwenden darf. Die<br />

beiden bereits vorgegebenen Regeln<br />

gestatten den Zugriff für den lokalen<br />

Client und alle anderen Netzteilnehmer<br />

und Benutzer. Um eigene Regeln festzulegen,<br />

müssen Sie diese beiden Standardregeln<br />

löschen. Für den Einsatz im<br />

heimischen Netz benötigen Sie jedoch<br />

meist keine zusätzlichen Zugriffsregeln.<br />

Profile<br />

Die zweite Kategorie, cProfiles, verwaltet<br />

die Webseitenkategorisierung. Die standardmäßig<br />

deaktivierten Regeln schalten<br />

Sie via Enabled scharf. Webseiten<br />

verwaltet cProfiles aufgrund ihres Inhalts<br />

in verschiedenen Kategorien, was es Ihnen<br />

theoretisch erlaubt, beispielsweise<br />

sehr leicht den Zugriff auf jugendgefährdende<br />

Inhalte zu sperren.<br />

Im Test stellte sich jedoch schnell Ernüchterung<br />

ein: Obwohl wir den Proxy<br />

zu Testzwecken anwiesen, Sportseiten<br />

auszufiltern, erkannte er keine einzige<br />

der Webseiten und erlaubte freien Zugriff<br />

auf alle Inhalte. Die deutsche Sprache<br />

schien dabei nicht das Problem zu<br />

sein – US-Seiten zum Thema American<br />

Football wurden weiter dargestellt. In<br />

weiterführenden Tests mit anderen Kategorien<br />

war es nicht möglich, Safesquid<br />

zum Erkennen unerwünschter Inhalte zu<br />

bewegen. Erst bei der Kategorie chat<br />

content gelang es der Software, Zugriff<br />

auf Chat-Webseiten zu verweigern.<br />

Eine entsprechende Nachfrage beim<br />

Hersteller von Safesquid ergab, dass die<br />

Filterlisten womöglich viele Webseiten<br />

anders kategorisieren als zunächst angenommen.<br />

Die von uns für den Test verwendete<br />

Webseite http:// www. sport1. de<br />

etwa sei laut dem Support mehr eine<br />

News- als eine Sport-Seite. In diesem Fall<br />

hätte man also sowohl News- als auch<br />

Sport-Inhalte blockieren müssen.<br />

Die Weboberfläche von Safesquid bietet<br />

die Möglichkeit, die Kategorisierung<br />

von URLs anzuzeigen (Test cProfiles), was<br />

zumindest für die von uns verwendeten<br />

URLs nur selten funktionierte. Meistens<br />

zeigten die URL-Tests keine Zuordnung,<br />

während Safesquid diese intern womöglich<br />

doch in eine Kategorie einstufte.<br />

Wenn Sie es ausprobieren möchten,<br />

aktivieren Sie die Kategorisierung und<br />

fügen mit Add ein cProfile hinzu. Tragen<br />

Sie in das Feld Chat den Begriff Chat ein,<br />

in der Category list haken Sie nun dementsprechend<br />

die Kategorie chat content<br />

an 4 , und im Textfeld Added profiles<br />

hinterlegen Sie blocked‐category.<br />

Bestätigen Sie Ihre Auswahl mit Submit,<br />

und wechseln Sie nun in die Konfigurationskategorie<br />

URL filter. Aktivieren<br />

Sie dieses Modul, indem Sie den Haken<br />

bei Enabled -> Yes setzen und auf Submit<br />

klicken. Fügen Sie in der Kategorie Deny<br />

zusätzlich mit dem Link Add eine neue<br />

Regel mit den folgenden Werten hinzu:<br />

Enabled: Yes<br />

Profiles: blocked‐category<br />

Bestätigen Sie wieder mit Submit und<br />

surfen Sie nun im Browser die Webseite<br />

http:// tinychat. com an. Voilà – Safesquid<br />

verweigert nun den Zugriff 5 .<br />

Achtung: Nach einem Neustart von<br />

Safesquid (und damit nach jedem Reboot)<br />

verschwinden die eigens angelegten<br />

cProfiles und URL-Filter. Eine Anfrage<br />

zur Klärung bestätigte unseren Verdacht:<br />

Safesquid hält die gespeicherten Einstellungen<br />

nur im RAM vor, weshalb sie<br />

beim Neustart der Software verlorengehen.<br />

Für Abhilfe sorgt das Sichern der<br />

Safesquid-Einstellungen (Link Save settings<br />

auf der Hauptseite). Die Applikation<br />

speichert die Konfiguration dann unter<br />

/opt/safesquid/safesquid/config.<br />

xml. Via Load settings auf der Hauptseite<br />

lesen Sie diese Datei später wieder ein.<br />

Ein weiterer unangenehmer Nebeneffekt:<br />

Der Proxy lässt einmal aufgerufene<br />

Webseiten, die normalerweise gesperrt<br />

wären, in Zukunft ungefiltert durch. Hier<br />

Listing 1<br />

$ cd /opt/safesquid<br />

$ wget http://www.shallalist.de/<br />

Downloads/shallalist.tar.gz<br />

$ tar xzvf shallalist.tar.gz<br />

4 Safesquids cProfiles<br />

erlauben es theoretisch,<br />

Webseiten<br />

bestimmter Themengebiete,<br />

etwa Chat,<br />

zu filtern.<br />

03.2014 www.linux-user.de<br />

71


Im Test<br />

Safesquid<br />

Unter Categories tragen Sie den Ordnernamen<br />

ein, in dem sich die fragliche<br />

Blacklist befindet. In unserem Beispiel<br />

liegen die URLs der Kategorie Podcast<br />

unter /opt/safesquid/BL/podcasts.<br />

Genügen diese Varianten der Surfkontrolle<br />

Ihren Ansprüchen nicht, so finden<br />

Sie in der Konfigurationskategorie Keyword<br />

filter umfangreiche Sammlungen<br />

von Schlüsselwörtern, die Sie nach Bedarf<br />

um eigene erweitern. Der Punkt<br />

DNS blacklist erlaubt es, Webseiten mithilfe<br />

von externen DNS-Blacklist-Anbietern<br />

zu blocken.<br />

5 Möchten Sie eine geblockte Seite aufrufen, leitet der Proxy-Server Safesquid den<br />

Browser auf eine Seite mit einem entsprechenden Hinweis auf den Filter um.<br />

Listing 2<br />

# apt‐get install clamav<br />

clamav‐daemon<br />

# freshclam<br />

# service clamav‐daemon start<br />

scheint Safesquid entweder durcheinander<br />

zu kommen oder ein undokumentiertes<br />

Feature zu enthalten.<br />

Funktionieren die cProfiles nicht zuverlässig<br />

genug, dann legen Sie in der<br />

Rubrik URL blacklist der Konfigurationskategorie<br />

eigene Sperrlisten an. Dieser<br />

Punkt eignet sich auch, um externe<br />

Sperrlisten einzubinden, wie sie beispielsweise<br />

Shalla Secure Services û für<br />

Privatnutzer kostenlos anbietet. Die Listen<br />

laden Sie als Tarball herunter und<br />

binden Sie in Safesquid ein (Listing 1).<br />

Navigieren Sie danach in die Kategorie<br />

URL blacklist, haken Sie Enabled an, und<br />

tragen Sie den Pfad /opt/​safesquid/​BL<br />

ein. Bestätigen Sie abschließend mit<br />

Submit. Alle Einträge aus den URL-Listen<br />

lädt Safesquid beim Start in den Hauptspeicher,<br />

was für ein Surfen ohne Leistungseinbußen<br />

durch den Filter sorgt.<br />

Um die Blacklists zu nutzen, erstellen Sie<br />

unter Deny folgende neue Regel:<br />

Enabled: true<br />

Comment: Podcasts<br />

Categories: podcasts<br />

Virenfrei<br />

Um sich zumindest rudimentär gegen<br />

Virenbefall aus Downloads zu schützen,<br />

hilft das Einbinden eines Virenscanners<br />

in den Proxy. Safesquid unterstützt<br />

neben dem kostenfreien ClamAV auch<br />

mehrere kommerzielle Produkte; für die<br />

meisten Zwecke dürfte ClamAV jedoch<br />

ausreichen.<br />

Klicken Sie auf die Konfigurationskategorie<br />

Client for ClamAV antivirus und aktivieren<br />

Sie die Checkbox Yes neben<br />

Enabled. Hinterlegen Sie den Wert /var/<br />

run/clamav/clamd.ctl für das Feld<br />

ClamAV hostname or socket path und bestätigen<br />

Sie mit Submit. Wechseln Sie nun<br />

in ein Terminalfenster und installieren<br />

Sie ClamAV den Befehlen aus Listing 2.<br />

Danach steht der Virenschutz zum Einsatz<br />

bereit 6 .<br />

Aktive Webinhalte<br />

Prinzipiell findet das Filtern von Medieninhalten<br />

auf zwei Arten statt: Entweder<br />

lassen Sie die Inhalte auf deren Mime-<br />

Types hin untersuchen (siehe /etc/<br />

mime.types), oder Sie filtern Inhalte aufgrund<br />

ihrer Endung aus (etwa .swf).<br />

Klicken Sie dazu auf die Konfigurationskategorie<br />

Mime filtering und aktivieren<br />

Sie dieses Modul mit dem Schalter<br />

Enabled. Anschließend bestätigen Sie<br />

die Eingabe via Submit und legen unter<br />

dem Reiter Deny eine neue Regel mit<br />

folgenden Werten an:<br />

Enabled Yes<br />

Comment Flash<br />

File .*swf<br />

Listing 3<br />

Mime type: application/x‐shockwave‐flash, application/<br />

x‐shockwave‐flash2‐preview, application/futuresplash, image/vnd.<br />

rn‐realflash<br />

Alternativ verwenden Sie anstelle von<br />

File auch das Attribut Mime type und geben<br />

beispielsweise den Wert aus Listing 3<br />

dafür ein. Je nachdem, welche Webseite<br />

sie nach Aktivierung der neuen Regel im<br />

72 www.linux-user.de<br />

03.2014


Safesquid<br />

Im Test<br />

Browser aufrufen, blendet der Filter Inhalte<br />

nun aus. Dabei gilt es zu beachten,<br />

dass nicht alle Flash-Inhalte auf .swf<br />

enden oder den in Listing 3 aufgezählten<br />

Mime-Typen angehören.<br />

In unserem Alltagstest erwies sich das<br />

Filtern durch Dateiendungen oder Mime-Types<br />

allerdings als wenig konsistent:<br />

Teilweise arbeitete der Filter korrekt<br />

und blendete die unerwünschten Flash-<br />

Inhalte aus, in anderen Fällen blockierte<br />

er die ganze Seite. Zusätzlich müssen Sie<br />

für jeden möglichen Flash-Mime-Type<br />

(oder für jede mögliche Dateiendung)<br />

von Flash-Dateien einen Filter anlegen,<br />

damit die Software auch wirklich alle<br />

Flash-Inhalte ausblendet. Verlässlich arbeitet<br />

der Filter jedoch in keinem Fall –<br />

womit dieses Feature nicht mehr als eine<br />

Spielerei darstellt.<br />

Auf Anfrage versprach uns der Hersteller,<br />

allen Benutzern bei Fragen zu den<br />

Filterregeln und Problemen zu helfen.<br />

Der Live-Support sei an sechs Tagen die<br />

Woche besetzt, ein kostenloses Ticket-<br />

System stehe auch den Nutzern der freien<br />

Version zur Verfügung, hieß es.<br />

Zubehör<br />

Der Punkt Prefetching aus der Konfiguration<br />

enthält eine Funktion, um bestimmte<br />

Webseiten bereits vor dem eigentlichen<br />

Besuch in den Cache von Safesquid<br />

zu laden. Dabei legen Sie vorab fest, welche<br />

Inhalte das Modul vorlädt. Einmal<br />

6 Nach dem Einbinden von ClamAV in Safesquid verweigert dieser zukünftig den<br />

Zugriff auf potenziell schädliche Webinhalte.<br />

03.2014 www.linux-user.de<br />

73


Im Test<br />

Safesquid<br />

aktiviert, geben Sie unter Prefetch queue<br />

auf der Hauptseite die Webseiten ein,<br />

die der Proxy vorab laden soll. Dadurch<br />

liefert Safesquid die Seite schneller aus.<br />

Die Kategorie Limits gibt Zugang zu<br />

einem mächtigen Werkzeug, mit dem<br />

Sie die Bandbreite für einzelne Rechner<br />

einschränken. Nett und nützlich: Indem<br />

Sie den Wert für das Feld Action auf Deny<br />

setzen, richten Sie beispielsweise eine<br />

automatische und zeitbasierte Surfsperre<br />

für den Nachwuchs ein.<br />

Listing 4<br />

Enabled true<br />

Comment Kein nächtliches Surfen<br />

Action allow<br />

Hour range 8,22<br />

Download transfer limit 0<br />

Upload transfer limit 0<br />

Request limit 0<br />

Download rate 0<br />

Time match mode absolutetime<br />

Möchten Sie anders herum keine Sperre<br />

anlegen, sondern vielmehr den Nutzungszeitraum<br />

definieren, verwenden<br />

Sie dafür die Beispielregel aus Listing 4.<br />

Für gezielte Umleitungen ist es möglich,<br />

unter der Konfigurationskategorie URL<br />

redirecting Webseitenaufrufe auf andere<br />

URLs umzuleiten.<br />

Module und Zusatzsoftware<br />

Safesquid erlaubt es, weitere Zusatzmodule<br />

einzubinden, und arbeitet mit<br />

mehreren bekannten Open-Source-Tools<br />

zusammen. Darunter finden sich viele<br />

nützliche Komponenten, wie etwa eine<br />

zum Ausschalten des Chats innerhalb<br />

von Google Mail oder eine Regelsammlung,<br />

die automatisch Werbebanner auf<br />

Webseiten ausblendet. Die Safesquid-<br />

Website hält eine Übersicht aller verfügbaren<br />

Addons vor û.<br />

Das Einbinden der Erweiterungen gestaltet<br />

sich recht simpel: Sie speichern<br />

das gewünschte Addon als XML-Datei<br />

und klicken in der Weboberfläche von<br />

Safesquid auf Load Settings. Anschließend<br />

tippen Sie den Pfad zur XML-Datei<br />

ein und aktivieren No bei Overwrite. Bestätigen<br />

Sie mit Submit. Um die Einstellungen<br />

sicherheitshalber zu speichern,<br />

wählen Sie noch Safe setting. Anstatt die<br />

Datei zunächst lokal zu speichern, gestattet<br />

es Ihnen die Software, den Link<br />

zur Datei direkt in das Eingabefeld der<br />

Konfiguration zu kopieren. Die Einstellungen<br />

werden sofort aktiv.<br />

Log-Dateien<br />

Auch eine Liste von Tools, die mit Safesquid<br />

zusammenarbeiten, finden Sie auf<br />

der Homepage û. Die für den Heimgebrauch<br />

interessantesten Werkzeuge lagern<br />

in der Kategorie Log Analyzers: Diese<br />

Tools bereiten die Log-Dateien so auf,<br />

dass sich diese beispielsweise komfortabel<br />

im Browser lesen lassen. Recht bekannt<br />

ist beispielsweise Webalizer. Die in<br />

Perl geschriebene Applikation schlüsselt<br />

(unter anderem) die Webnutzung in Hits,<br />

die besuchten Webseiten und das verursachte<br />

Verkehrsvolumen auf, jeweils<br />

tages- und monatsweise.<br />

Fazit<br />

Was in der Theorie gut klingt, zeigt in<br />

der Praxis in mehrfacher Hinsicht Lücken.<br />

Safesquid hebt sich zwar mit einer<br />

vermeintlich simplen, allerdings häufig<br />

unübersichtlichen Weboberfläche von<br />

der Konkurrenz ab, eine deutsche Lokalisierung<br />

steht dafür jedoch nicht bereit.<br />

Schwerer ins Gewicht fällt die mangelhafte<br />

Unterstützung selbst aktueller Distributionen<br />

wie Ubuntu 13.10 oder Fedora<br />

19. Daneben verfehlt das Modul<br />

cProfile praktisch komplett seine Wirkung:<br />

Es lässt mehr oder weniger wahllos<br />

eigentlich gesperrte Seiten gewähren,<br />

darüber hinaus „vergisst“ es beim<br />

Restart des Proxys manuelle Änderungen.<br />

Ähnlich sieht es mit dem Mime-Filter<br />

aus, der nicht nur Content mit den<br />

vorgegebenen Dateiendungen aussperrt,<br />

sondern zuweilen die komplette<br />

Seite blockiert, die einen solchen enthält.<br />

Für ein kommerzielles Produkt, das<br />

für eine 100-Nutzer-Lizenz immerhin<br />

600 US-Dollar verlangt, sind solche Patzer<br />

schlicht unakzeptabel.<br />

Positiv sticht heraus, dass der Hersteller<br />

auch den Nutzern der kostenfreien<br />

Safesquid-Version via Live-Chat und Ticket-System<br />

unter die Arme greift. Während<br />

unserer Tests gewannen wir zumindest<br />

den Eindruck, dass die Kollegen aus<br />

Indien sehr hilfsbereit sind und bei Bedarf<br />

gerne auch Live-Demos organisieren,<br />

um mögliche Missverständnisse<br />

beim Setup aus dem Weg zu räumen.<br />

Wer mit den Makeln des Produkts leben<br />

kann und etwas Zeit in die Einrichtung<br />

und gegebenenfalls den Support<br />

steckt, erhält einen für den heimischen<br />

Einsatz durchaus brauchbaren Proxy<br />

samt Content-Filter und Weboberfläche.<br />

Dabei gilt es aber zu bedenken, dass beispielsweise<br />

die freie Firewall-Distribution<br />

IPFire û ähnliche Funktionen bietet, die<br />

aber zum einen besser implementiert<br />

wurden und zum anderen weitgehend<br />

fehlerfrei funktionieren. (tle) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31121<br />

74 www.linux-user.de<br />

03.2014


Schwerpunkt<br />

Labyrinth<br />

Mindmaps erfassen mit Labyrinth<br />

Gedanken<br />

vernetzen<br />

Mit dem Mindmapper Labyrinth sammeln<br />

Sie Gedanken und Ideen und bringen diese<br />

anschließend ohne Umwege zu Papier.<br />

Vincze-Aron Szabo<br />

Ideen zu sammeln und zu strukturieren,<br />

fällt oft nicht leicht. Vielen hilft ein leeres<br />

Blatt Papier, um Gedankengänge und<br />

Geistesblitze zu notieren. Doch wenn Sie<br />

mit den Produkten des Erdachten spielen<br />

möchten oder diese auch in ferner<br />

Zukunft noch parat haben wollen, greifen<br />

Sie am besten auf Mindmaps zurück<br />

(siehe Kasten Strich um Strich).<br />

Software wie Labyrinth û erleichtert<br />

das Erstellen von Mindmaps ungemein.<br />

Sie hilft beim ersten Sammeln der Ideen<br />

und ermöglicht es, die erarbeiteten<br />

Strukturen für eine erneute Sitzung abzuspeichern.<br />

Bei Bedarf bearbeiten Sie<br />

die Grafik, indem Sie einzelne Knoten<br />

der Karte einfärben oder Bilder einbinden.<br />

Labyrinth ermöglicht es darüber<br />

hinaus, die Elemente nahezu beliebig zu<br />

verändern, um so ein neues Bild der<br />

Gedanken-„Landschaft“ zu erhalten.<br />

Readme<br />

Mittels Mindmapping ordnen Sie Ge -<br />

danken visuell in einem Graphen. Das Programm<br />

Labyrinth hilft Ihnen beim Kartografieren<br />

der Ideen und ermöglicht es, das fertige<br />

Gedankengebäude anschließend in<br />

eine Bilddatei zu exportieren.<br />

Installation<br />

Ubuntu führt Labyrinth bereits in seinen Repositories, sodass Sie die Anwendung hier<br />

bequem über den grafischen Paketmanager installieren. Noch schneller klappt es mit<br />

dem folgenden Befehl auf der Kommandozeile:<br />

$ sudo apt‐get install labyrinth<br />

Sofern Sie eine andere Distributionen verwenden und das Programm über deren jeweilige<br />

Paketverwaltungswerkzeuge nicht finden, müssen Sie die Anwendung als Quellcode<br />

û von der Projektwebseite herunterladen und manuell übersetzen.<br />

© Nico1, sxc.hu<br />

Schlanker Auftritt<br />

Labyrinth startet mit einem kleinen Programmfenster,<br />

in dem das Tool alle neu<br />

angelegten Mindmaps automatisch<br />

speichert und auflistet 1 . Das Speichern<br />

allgemein nimmt Labyrinth Ihnen<br />

komfortabel ab; eine entsprechende<br />

Funktion finden Sie in den Menüs nicht.<br />

Um eine neue Mindmap anzulegen,<br />

klicken Sie einfach auf Neu, woraufhin<br />

sich ein weiteres Fenster öffnet. In diesem<br />

bearbeiten Sie die Daten. Alle dazu<br />

erforderlichen Funktionen stehen über<br />

Symbolleisten bereit 2 .<br />

In der oberen Leiste finden Sie die<br />

Werkzeuge zum Bearbeiten der Mindmap,<br />

die Zoom- und die Undo-Funktion.<br />

Die Leiste am unteren Rand dagegen<br />

bietet Ihnen Optionen zum Formatieren<br />

der Schriften und grafischen Elemente.<br />

Um neue Knoten zu zeichnen, aktivieren<br />

Sie den Bearbeitungsmodus. Dazu<br />

klicken Sie auf die Schaltfläche mit dem<br />

Bleistiftsymbol in der oberen Leiste und<br />

anschließend auf eine leere Stelle in der<br />

Mindmap. Hier erscheint nun die Einfügemarke,<br />

und Sie haben die Möglichkeit,<br />

einen Text einzugeben. Dieser fällt im<br />

Idealfall kurz und prägnant aus. Sind Sie<br />

fertig, klicken Sie einfach an eine weitere<br />

Stelle, um den nächsten Knoten einzu-<br />

76<br />

www.linux-user.de<br />

03.2014


Labyrinth<br />

UBUNTU<br />

Schwerpunkt<br />

user<br />

geben. Die Verbindungslinie zwischen<br />

diesen beiden Knoten zeichnet das Programm<br />

automatisch.<br />

Sofern Sie von einem bestimmten<br />

Knoten ausgehend eine andere Verbindung<br />

wünschen als automatisch eingezeichnet,<br />

wählen Sie zunächst den Knoten,<br />

an dem Sie einen weiteren anhängen<br />

möchten, mit der Maus aus, und klicken<br />

anschließend an eine freie Stelle.<br />

Mehr Format<br />

Über [Strg]+[L] verbinden Sie bislang<br />

nicht gekoppelte Knoten miteinander.<br />

Das eröffnet auch die Möglichkeit, einen<br />

Knoten mit mehreren anderen zu verknüpfen.<br />

Sollten Sie eine Verbindung<br />

wieder entfernen wollen, wenden Sie<br />

dieselbe Tastenkombination einfach erneut<br />

an. Haben Sie einige Knoten eingezeichnet,<br />

lohnt es sich in vielen Fällen,<br />

die Mindmap zu optimieren, indem Sie<br />

die einzelnen Gedanken an die passendere<br />

Stelle verschieben.<br />

Um Texte nachträglich zu formatieren,<br />

klicken Sie zunächst doppelt auf das Element,<br />

um dies in den entsprechenden<br />

Modus umzuschalten. Haben Sie den<br />

Text markiert, stehen die Optionen zum<br />

Formatieren am unteren Rand bereit.<br />

Um eine gut lesbare Mindmap zu gestalten,<br />

dürfen die Texte eines Knotens<br />

nicht zu lang ausfallen. Daher bietet es<br />

sich für erläuternden Zusatztext an, die<br />

Funktion Erweiterte Informationen zu<br />

nutzen. Diese aktivieren Sie aus dem<br />

Menü Ansicht heraus. Ziehen Sie nun das<br />

Fenster mit der Mindmap so weit auf,<br />

dass Sie am unteren Fensterrand das<br />

Eingabefeld für die zusätzlichen Notizen<br />

sehen. Wählen Sie vorher mit der Maus<br />

den gewünschten Knoten aus.<br />

Ein Bild sagt mehr als tausend Worte.<br />

Daher ist es durchaus sinnvoll, komplizierte<br />

Sachverhalte in einer Mindmap<br />

nicht durch Text darzustellen, sondern<br />

durch eine aussagekräftige Zeichnung.<br />

Labyrinth bietet die Möglichkeit, statt<br />

eines Textknotens Grafiken einzufügen.<br />

Das Hinzufügen von Bildern funktioniert<br />

prinzipiell wie das Hinzufügen von<br />

Texten. Allerdings wählen Sie zunächst<br />

im Menü Modus den Punkt Bild hinzufügen<br />

aus, oder Sie klicken auf die Schaltfläche<br />

mit dem grünen Plus-Symbol. Anschließend<br />

klicken Sie in den leeren Bereich<br />

der Mindmap.<br />

Zeichnungen<br />

Das Programm erlaubt es, innerhalb der<br />

Mindmap kleine Zeichnungen zu erstellen.<br />

Sie erreichen die entsprechende<br />

Funktion über Modus | Zeichenmodus.<br />

Sie fügen ein Zeichenfeld ein, indem Sie<br />

auf eine freie Stelle klicken. Das Zeichenfeld<br />

erscheint zunächst nur sehr klein.<br />

Sobald Sie aber damit beginnen, die<br />

Zeichnung über die Feldgrenzen hinaus<br />

fortzusetzen, vergrößert Labyrinth den<br />

Rahmen entsprechend. Daher empfiehlt<br />

es sich, vorher das Mindmap-Fenster so<br />

anzupassen.<br />

Der bei Weitem umfangreichste Dialog<br />

der Applikation widmet sich dem Thema<br />

Export. Das Programm erlaubt, die Daten,<br />

die es zunächst in einem eigenen<br />

Format speichert, nach dem Fertigstellen<br />

als Pixel- oder Vektorgrafik zu exportieren.<br />

Dazu rufen Sie den entsprechenden<br />

Dialog über Datei | Als Bild exportieren<br />

auf 3 .<br />

Zunächst legen Sie fest, was Sie exportieren<br />

wollen, standardmäßig gibt es die<br />

Option Vollständige Mindmap vor. Alternativ<br />

wählen Sie den aktuell sichtbaren<br />

Bereich zum Exportieren aus.<br />

Strich um Strich<br />

1 Labyrinth sammelt alle von Ihnen angelegten Mindmaps<br />

in einem kleinen Programmfenster.<br />

Hinter der Technik des Mindmapping verbirgt sich eine kognitive Methode,<br />

um Gedanken zu sammeln, Themen zu strukturieren, Vorgänge zu planen<br />

oder sich einfach Notizen zu machen.<br />

Vom Prinzip her birgt die Methode keine großen Hürden: Sie nehmen ein<br />

Blatt Papier zur Hand und schreiben in dessen Mitte den zentralen Begriff,<br />

um den es geht. Danach notieren Sie den nächsten Begriff, der Ihnen dazu<br />

in den Sinn kommt, neben dem zentralen Begriff und verbinden das neue<br />

Element auf dem Papier mit einer Linie.<br />

Alle weiteren Begriffe, die Ihnen anschließend einfallen, schreiben Sie<br />

ebenso auf, und verbinden auch diese mit einer Linie mit einem in direkter<br />

Beziehung stehenden Begriff, der schon auf dem Papier steht. Auf diese<br />

Weise entsteht im Laufe des Prozesses eine Art Landkarte Ihrer Gedanken<br />

zum zentralen Thema: die Mindmap.<br />

03.2014 www.linux-user.de<br />

77


Schwerpunkt<br />

UBUNTU<br />

user<br />

Labyrinth<br />

Dass Sie sich bezüglich Speichern und<br />

Öffnen um nichts zu kümmern brauchen<br />

und das kleine Startfenster Ihnen die<br />

meiste Arbeit abnimmt, sorgt einerseits<br />

für Komfort. Andererseits erscheint das<br />

Fehlen eines gewöhnlichen Öffnen-Dialoges<br />

etwas gewöhnungsbedürftig. Außerdem<br />

fehlt die Möglichkeit, die Mindmaps<br />

in einem Ordner eigener Wahl abzuspeichern.<br />

Möchten Sie dennoch einmal eine<br />

Mindmap per E-Mail verschicken oder<br />

anderswo abspeichern, öffnen Sie diese<br />

zunächst und legen sie anschließend<br />

über Datei | Exportiere Mindmap in den<br />

gewünschten Ordner ab. Um eine solche<br />

Datei später zu öffnen, importieren Sie<br />

sie über das Startfenster, indem Sie die<br />

Funktion Datei | Importieren nutzen.<br />

Fazit<br />

2 Eine neue Mindmap erhält in Labyrinth jeweils ein eigenes Fenster, das alle vorhandenen<br />

Funktionen übersichtlich bündelt.<br />

Neben den üblichen Optionen zum<br />

Speichern der Daten, wie dem Dateinamen<br />

oder dem Ordner, dürfen Sie zwischen<br />

vier verschiedenen Formaten für<br />

die Ausgabe wählen. Es stehen die Bitmap-Formate<br />

JPEG und PNG bereit,<br />

alternativ sichern Sie das Gedankengebäude<br />

als verlustfrei skalierbare Vektorgrafik<br />

(SVG) oder als PDF-Dokument,<br />

was den Austausch zwischen den Plattformen<br />

erleichtert.<br />

3 Labyrinth kann<br />

Mindmaps in verschiedene<br />

Formate<br />

exportieren, um sie<br />

in anderen Anwendungen<br />

einzubinden.<br />

Der Mindmapper Labyrinth präsentiert<br />

sich als kleines, übersichtliches Tool für<br />

das schnelle Erstellen von Graphen ohne<br />

viel Drumherum. Das Ideenwerkzeug<br />

kommt gleich zum Punkt und beschränkt<br />

sich in Bezug auf die Funktionen<br />

auf das Wesentliche: das Erstellen<br />

der Graphen. Diese dürfen allerdings<br />

nicht zu umfangreich ausfallen, denn<br />

das Bedienkonzept der Software erscheint<br />

stellenweise wenig durchdacht<br />

und unzeitgemäß. Dadurch erwschwert<br />

es die Arbeit mit dem ansonsten sehr<br />

praktischen Tool ganz unnötig.<br />

So erhebt sich etwa die Frage, warum<br />

die Anwendung die wenigen Funktionen<br />

nicht kompakt in einem übersichtlichen<br />

Fenster bündelt. Außerdem fehlt<br />

eine Druckfunktion, um die niedergeschriebenen<br />

Gedankengänge auch auf<br />

Papier zu bannen.<br />

Letztendlich bleibt iin diesem Fall nur<br />

der krude Umweg über einen Export<br />

und das Drucken mithilfe eines anderen<br />

Programms. Dennoch eignet es Labyrinth<br />

bestens, um schnell erste Ideen zu<br />

sammeln und zu kartografieren. (agr) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31494<br />

78 www.linux-user.de<br />

03.2014


Netz&System<br />

Cygwin<br />

Cygwin: Linux unter Windows nutzen<br />

Teamwork<br />

© Art3d, 123RF<br />

Mit der Cygwin-Umgebung<br />

laufen unter Windows mehr<br />

Linux-Anwendungen als anders<br />

herum unter Wine. Auch<br />

das Ausführen grafischer Programme<br />

eines Linux-Rechners<br />

über das Netz gelingt<br />

mit wenig Aufwand.<br />

Peter Kreußel<br />

Readme<br />

Die Windows-Laufzeitumgebung Cygwin portiert<br />

viele Linux-Programme auf Windows –<br />

vor allem OpenSSH und den X-Server. Damit<br />

starten Sie von einem Windows-Rechner aus<br />

remote Linux-Programme. Eine Bash zum<br />

Arbeiten unter Windows sowie viele weitere<br />

Programme kommen als Bonus dazu.<br />

Obwohl Microsoft Linux nicht mehr wie<br />

früher vollständig totschweigt, herrscht<br />

zwischen Windows- und Linux-Rechnern<br />

von Haus aus immer noch Funkstille: Das<br />

unter Linux ohne Weiteres mögliche<br />

Starten von grafischen Linux-Programmen<br />

über die Secure Shell klappt von<br />

Windows aus nicht.<br />

Wie Cygwin funktioniert<br />

Linux-Programme laufen vor allem deshalb<br />

nicht unter Windows, weil sich die Systemaufrufen<br />

unter Linux und unter Windows<br />

voneinander unterscheiden. Dahinter verbergen<br />

sich die Schnittstellen, über die<br />

Programme mit dem Betriebssystem interagieren.<br />

Die Cygwin-Umgebung schiebt<br />

eine Schicht dazwischen, welche die Linux-<br />

Sys tem-Calls in die passenden Windows-<br />

Äquivalente übersetzt.<br />

Dies ändert sich, sobald Sie die<br />

Cygwin-Umgebung û installieren.<br />

Dabei handelt es sich um eine Windows-Laufzeitumgebung<br />

für Linux-Programme<br />

1 , also eine Art Gegenstück<br />

zur Linux-Software Wine û. Es besteht<br />

jedoch ein grundlegender Unterschied:<br />

Während Wine fertige Windows-Binaries<br />

startet, gilt es, Linux-Programme für die<br />

Cygwin-Umgebung anzupassen und<br />

neu zu kompilieren (siehe Kasten Wie<br />

Cygwin funktioniert).<br />

1Das Cygwin-Projekt bringt Pakete für<br />

die Bash, SSH und den X-Server und viele<br />

weitere Komponenten gebrauchsfertig<br />

mit, die Sie über einen grafischen Installer<br />

mit wenigen Mausklicks installie-<br />

Anders als bei der Emulation Wine, das originale<br />

Windows-Programmdateien quasi<br />

Huckepack startet, muss man die Cygwin-<br />

Zwischenschicht in die ausführbare Datei<br />

jedes Programms einkompilieren. Dazu<br />

gibt es in der Cygwin-Umgebung eine modifizierte<br />

GCC-Fassung, die aus dem nur<br />

geringfügig modifizierten Quellcode eines<br />

Unix-Programms Windows-EXE- und die<br />

gefürchteten DLL-Dateien erzeugt.<br />

80 www.linux-user.de<br />

03.2014


Cygwin<br />

Netz&System<br />

Cygwin<br />

LU/cygwin/<br />

1 Wie bei Wine handelt es sich auch bei Cygwin um eine Laufzeit-Zwischenschicht,<br />

die zwischen System-Calls von Windows und Linux vermittelt. Anders als bei Wine müssen<br />

die Programme die benötigte Laufzeitumgebung jedoch selbst mitbringen.<br />

ren und aktuell halten. So statten Sie<br />

Windows ohne großen Aufwand mit SSH<br />

und einem X-Server aus.<br />

Programme, wie OpenSSH und das<br />

X-Window-System sind gefragte Highlights<br />

der für Cygwin verfügbaren Linux-<br />

Programme. Da Linux-Ports mit Cygwin-<br />

Unterstützung oft sehr leicht gelingen,<br />

stehen Windows-Versionen vieler weiterer<br />

Linux-Programme zum Einsatz bereit<br />

(siehe Kasten Cygwin Ports).<br />

Nur ein paar Mausklicks<br />

Bei der Bedienung kommt Cygwin Windows-Anwendern<br />

ohne Konsolenerfahrung<br />

entgegen: Mit einem Klick auf<br />

setup_x86.exe û (oder setup_x86_64.<br />

exe û für 64-Bit-Systeme) starten Sie<br />

das grafische Installationsprogramm.<br />

Danach erfragt das Setup-Programm das<br />

Root-Verzeichnis, wofür es C:\cygwin<br />

vorschlägt. Alle installierten Dateien<br />

liegen später unterhalb dieses Ordners,<br />

und zwar in einem gewöhnlichen Linux-<br />

Filesystem-Layout.<br />

Nicht mehr ganz so Windows-typisch<br />

ist die eingebaute automatische Auflösungen<br />

von Paketabhängigkeiten. Dank<br />

dieser genügt es, zum Einrichten einer<br />

Umgebung zum Ausführen von Remote-<br />

X-Programmen die Pakete xinit, openssh<br />

und xterm auszuwählen 2 . Alle Abhängigkeiten,<br />

wie etwa den X-Server oder<br />

die Cygwin-Laufzeitumgebung, installiert<br />

das Setup-Programm dann automatisch.<br />

Dabei kommt ein Download von<br />

etwa 70 MByte Umfang zusammen.<br />

Beim Auffinden dieser Pakete in der langen<br />

Liste hilft das Suchfeld am oberen<br />

Fensterrand. Ein Klick auf Skip wechselt<br />

zwischen Installieren, Updaten, Deinstallieren<br />

oder Überspringen. Zum Aktualisieren<br />

aller installierten Pakete starten Sie<br />

das Setup-Programm, ohne die Paketauswahl<br />

zu verändern.<br />

Erste Schritte<br />

Sofern Sie das bei der Installation nicht<br />

explizit abgewählt haben, erstellt der Installer<br />

einen Starter für die Cygwin-Konsole<br />

auf dem Desktop und im Windows-<br />

Startmenü. Im Startmenü-Ordner Cygwin-X<br />

landet außerdem ein Eintrag zum<br />

Starten des X-Servers ohne den Umweg<br />

über die Cygwin-Konsole.<br />

Cygwin Ports<br />

Cygwin Ports spielen Sie mit dem gleichen Installer ein wie das Cygwin-Grundsystem<br />

selbst. Allerdings dürfen Sie die Einrichtungsroutine<br />

dazu nicht mit einem Doppelklick aus dem Explorer heraus starten,<br />

sonst akzeptiert diese die Signatur des Cygwin-Ports-Repositorys<br />

nicht. Teilen Sie dem Installer diese auf der Cygwin-Konsole mit<br />

$ cygstart ‐‐ /Pfad/zu/setup‐x86.exe ‐K http://cygwiU<br />

nports.org/ports.gpg<br />

Bei der Frage nach dem Download-Mirror geben Sie ftp://ftp.<br />

cygwinports.org/pub/cygwinports ein, und klicken Sie auf Add.<br />

Falls Sie einen deutschen Mirror û nutzen möchten, darf dieser nicht<br />

auf demselben Server liegen wie der zuletzt benutzte Download,<br />

sonst erkennt ihn der Cygwin-Installer nicht als neue Quelle. Die URL<br />

muss auf das Verzeichnis cygwinports/ auf dem Server zeigen.<br />

Noch sind nicht alle Programme für die 64-Bit-Architektur konvertiert<br />

û, sodass es sich eventuell lohnt, auch auf einem 64-Bit-System<br />

die 32-Bit-Variante zu installieren.<br />

Zu den Highlights in der Liste der portierten Programme zählen das<br />

Officepaket Abiword, Amarok, Apache2, Avidemux, Bluefish, Calligra<br />

Office, Dia, Digikam, Dvdauthor, Emacs, Espeak, Evolution, Ffmpeg,<br />

Filezilla, Fluidsynth, Gimp, Git, Gnucash, Gnumeric, Gnuchess, Inkscape,<br />

Jokosher, Kate, Kmail, Kontact, Kstars, Monodevelop, Mplayer,<br />

Scribus und der Audivoplayer Xmms2.<br />

Außerdem stehen die Desktop-Umgebungen Gnome, KDE, LXDE,<br />

Mate, ROX und XFCE inklusive vieler zugehöriger Komponenten als<br />

Ports für Cygwim bereit.<br />

03.2014 www.linux-user.de<br />

81


Netz&System<br />

Cygwin<br />

2 Der grafische Installer von Cygwin löst die Abhängigkeiten<br />

ausgewählter Komponenten automatisch auf.<br />

3 Linux unter Windows: In der Cygwin-Umgebung fühlen sich<br />

Linux-Geeks dank der gewohnten Bash heimisch.<br />

Öffnen Sie zunächst das Cygwin Terminal.<br />

Im Konsolenfenster 3 begrüßt Sie<br />

eine weitgehend unmodifizierte Bourne<br />

Again Shell. Die Cygwin-Bash versteht allerdings<br />

neben Unix-Dateipfaden auch<br />

die Windows-Version mit Backslash und<br />

Laufwerksbuchstaben. Die von Linux-<br />

Systemen gewohnte Shell lässt sich daher<br />

uneingeschränkt für Dateioperationen<br />

und Skripting innerhalb der Windows-Umgebung<br />

nutzen.<br />

Absolute Unix-Pfadangaben wie /home<br />

übersetzt die Cygwin-Variante der Shell<br />

in Pfade relativ zum Installationsordner<br />

von Cygwin (c:\cygwin respektive c:\<br />

cygwin64). Entscheidend ist dabei auch,<br />

dass EXE-Dateien sich ohne Endung aufrufen<br />

lassen: Alle nach Cygwin portierten<br />

Programmdateien müssen diese Namenserweiterung<br />

zwar erhalten, damit<br />

sie sich unter Windows ausführen lassen.<br />

Dennoch funktionieren auf der Cygwin-<br />

4 Remote-X unter Windows: Ein Eintrag im Startmenü öffnet ein X-Terminal und einen X-Server im Hintergrund. Eine SSH-Verbindung<br />

zu einer Linux-Maschine samt X-Forwarding zaubert dann Linux-Programme in Windows-Fensterdekoration auf den Desktop.<br />

82 www.linux-user.de<br />

03.2014


Cygwin<br />

Netz&System<br />

Konsole Aufrufe wie /usr/bin/xterm,<br />

und auch alle für Linux geschriebenen<br />

Bash-<strong>Skripte</strong> bleiben verwendbar.<br />

Der Cygwin-X-Server basiert auf dem<br />

Original von X.org, wurde bei der Portierung<br />

allerdings leicht erweitert. Die<br />

Linux-Programme, die über das Netz auf<br />

ihn zugreifen, merken davon aber nichts,<br />

sodass es beim Remote-Arbeiten mit<br />

Linux-Rechnern keine Probleme gibt.<br />

Fenstermanager<br />

Sie starten den X-Server am einfachsten<br />

über den Startmenü-Eintrag Cygwin‐X/<br />

XWin Server. Dabei öffnet sich ein<br />

Xterm-Fenster 4 . Das Symbol für den<br />

X-Server erscheint zwar in der Taskleiste,<br />

jedoch ohne Zuordnung zu einem Programmfenster.<br />

Melden Sie sich nun mit ssh ‐X<br />

IP‐Linux‐PC auf ihrer Linux-Maschine<br />

an. Der Parameter ‐X sorgt für das X11-<br />

Forwarding. Nun dürfen Sie auf dem<br />

entfernten Rechner beliebige grafische<br />

Anwendungen starten. Die Programmfenster<br />

öffnen sich mit der Windows-<br />

Fensterdekoration.<br />

Das eben beschriebene Vorgehen<br />

nutzt den sogenannten Multi-Window-<br />

Modus, der entfernt gestartete Programme<br />

aber auch für das lokal ablaufende<br />

Xterm in separaten Windows-Fenstern<br />

anzeigt. In der Cygwin-Umgebung installierte<br />

Ports von Linux-Anwendungen<br />

fügen sich ebenso wie die remote per<br />

SSH gestarteten Anwendungen organisch<br />

in den Windows-Desktop ein.<br />

Auch lokal installierte Ports von X-Anwendungen<br />

benötigen Zugriff auf einen<br />

X-Server. Sie rufen diese ohne vorherigen<br />

Aufbau einer SSH-Verbindung im<br />

beschriebenen Xterm-Fenster auf, denn<br />

dort ist, anders als auf der normalen<br />

Cygwin-Konsole, die Shell-Variable DIS-<br />

PLAY bereits gesetzt.<br />

5 Per XDMCP verknüpft sich ein Cygwin-X-Server direkt mit dem Display-Manager eines<br />

Linux-Rechners. Allerdings taugt diese unsicherere Kommunikation wegen der im Klartext<br />

transferierten Passwörter nur für ein geschütztes privates Netzwerk.<br />

Alternativ importiert der Cygwin-X-Server<br />

statt einzelner Anwendungen auch<br />

einen ganzen Linux-Desktop. Mit VNC<br />

mag dies etwas einfacher gehen, doch<br />

Remote-X bringt eine bessere Bildqualität<br />

und die Anzeige reagiert zügiger –<br />

zumindest im lokalen Netz. Außerdem<br />

startet eine eigenständige Desktop-Session.<br />

Ein auf dem entfernten Rechner lokal<br />

angemeldeter Benutzer kann daher<br />

ungestört weiterarbeiten.<br />

Der X-Server und auch dessen Cygwin-Port<br />

bringt für diesen Zweck ein eigenes<br />

Protokoll namens XDMCP (X Display<br />

Manager Control Protocol) mit. Dabei<br />

erscheint im X-Server unter Windows<br />

der Login-Schirm des Display Managers<br />

Gesamtpaket<br />

6 Portiert, nicht remote ausgeführt: In der Cygwin-Umgebung läuft hier ein vollwertiger<br />

KDE-Desktop.<br />

03.2014 www.linux-user.de<br />

83


Netz&System<br />

Cygwin<br />

einem Angreifer etwa bei einer WLAN-<br />

Verbindung gelingt, den Netzwerkverkehr<br />

abzuhören. Deswegen deaktivieren<br />

die gängigen Distributionen XDMCP.<br />

Um es einzuschalten verändern Sie in<br />

der Sektion [Xdmcp] der Display-Manager-Konfigurationsdatei<br />

den Wert der<br />

Variablen Enabled zu true. Für KDM erledigen<br />

Sie das in /usr/share/config/<br />

kdm/kdmrc, für LightDM unter Ubuntu in<br />

/etc/lightdm/lightdm.conf. Bei GDM<br />

editieren Sie /etc/gdm/custom.conf.<br />

Starten Sie nun den Display-Manager-<br />

Dienst (kdm, gdm oder lightdm) neu. Danach<br />

geben Sie in der Cygwin-Konsole X<br />

‐query Server‐IP ein, um das gewohnte<br />

Look & Feel bei der Anmeldung am<br />

Linux-Rechner zu erhalten.<br />

Sicherer Tunnel<br />

7 Der noch als experimentell gekennzeichnete Parameter ‐mwextwm des Cygwin-X-Servers<br />

erlaubt es, eine lokale Windowmaker-Umgebung zu starten, die den Windows-Desktop<br />

durchscheinen lässt. In dieser Konfiguration setzt die Fensterdekoration X-Anwendungen<br />

deutlich von den nativen Windows-Programmen ab.<br />

(KDM, GDM oder LightDM 5 . Allerdings<br />

wandern dabei Passwörter im Klartext<br />

durch das Netz. Da XDMCP jedoch auf<br />

UDP aufsetzt, lässt es sich nicht über<br />

eine SSH-Verbindung tunneln, wie die<br />

(für sich genommen ebenfalls unsichere)<br />

Remote-X-Verbindung.<br />

Das Verfahren eignet sich also nur für<br />

das vertrauenswürdige Heimnetzwerk.<br />

Selbst dort wird es zum Risiko, sobald es<br />

Eine Remote-Desktop-Sitzung lässt sich<br />

aber über einen sicheren SSH-Tunnel initiieren.<br />

Dazu starten Sie in der Cygwin-<br />

Konsole zunächst mit X & einen lokalen<br />

X-Server. Das & schickt den Dienst in den<br />

Hintergrund und sorgt dafür, dass Sie<br />

die Konsole weiter benutzen können.<br />

Da der Befehl das X-Binary direkt aufruft,<br />

startet nur der X-Server in einem<br />

großen Fenster, in dem es kein Terminal<br />

zum Aufbau einer SSH-Session gibt. So<br />

vermeiden Sie innerhalb der Desktop-<br />

Umgebung ein Fenster, dessen Schließen<br />

alle offenen Anwendungen ebenfalls<br />

beendet. Wechseln Sie nach dem<br />

Öffnen des X-Window-Fensters zur Cygwin-Konsole<br />

und starten Sie mit folgendem<br />

Befehl remote eine KDE-Desktop-<br />

Umgebung:<br />

DISPLAY=:0.0; ssh ‐Y ‐f IP‐Linux‐U<br />

PC; startkde<br />

8 Das Programm<br />

Xlaunch erspart<br />

beim Start des<br />

Cygwin-X-Servers<br />

in allen Varianten<br />

die Auseinandersetzung<br />

mit Kommandozeilenparametern.<br />

Nach dem Setzen der Variable DISPLAY<br />

folgt ein SSH-Aufruf, der nach Ausführen<br />

eines Befehls auf dem entfernten Rechner<br />

die Konsole wieder freigibt (Option<br />

‐f). Der Parameter ‐Y initiiert das X-For-<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31428<br />

84 www.linux-user.de<br />

03.2014


Cygwin<br />

Netz&System<br />

warding im Trusted-Modus, damit der<br />

Fenstermanager aus der Ferne die X-Instanz<br />

des anderen Rechners nutzen darf.<br />

Für XFCE ersetzen Sie startkde durch<br />

startxfce4, LXDE hört auf startlxde.<br />

Problematisch gab sich im Test Gnome 3<br />

beim Startbefehl gnome‐session: Die<br />

Desktop-Umgebung scheitert wegen<br />

der fehlenden 3D-Unterstützung. Eine<br />

allgemeingültige Methode, sie über das<br />

Netzwerk in den Fallback-Modus zu<br />

zwingen, scheint nicht zu existieren.<br />

Alles von zu Hause aus<br />

Als dritte Variante bietet es sich an, eine<br />

portierte Desktop-Umgebung (oder wenigstens<br />

einen Fenstermanager) lokal in<br />

die Cygwin-Umgebung zu installieren.<br />

Wie im Mehrfenster-Modus starten Sie<br />

dann remote nur noch die eigentlichen<br />

Anwendungen. Trotzdem wartet der<br />

Desktop mit dem Look & Feel von Linux<br />

auf – für Remote-Anwendungen, aber<br />

auch für lokal installierte Ports.<br />

Aus dem Standard-Cygwin-Repository<br />

lassen sich Windowmaker sowie die<br />

Fenstermanager Fwm und Twm installieren.<br />

Auf Cygwin-Ports û stehen Gnome,<br />

KDE, LXDE, Mate, ROX, XFCE und die Sugar-Desktop-Umgebung<br />

zur Verfügung.<br />

Nach der Installation von KDE fehlte<br />

im Test allerdings die Abhängigkeit<br />

libqt4, weil sie zwar im normalen Repo<br />

bereitsteht, nicht aber in jenem von Cygwin<br />

Ports. Erst ein Neustart des Installers<br />

und das Einbinden des entsprechenden<br />

Repositories behob das Problem. Danach<br />

konnten wir der Cygwin-Umgebung<br />

einen KDE-Desktop entlocken 6 ,<br />

allerdings erst nach einer vergleichsweise<br />

langen Startzeit.<br />

Der Gnome-Desktop ließ sich im Test<br />

allerdings nicht starten, da die Gnome<br />

Shell auf dem Server nicht zu finden war.<br />

Die spartanische Windowmaker-Umgebung<br />

7 funktionierte dagegen auf Anhieb.<br />

Der entsprechende Download fällt<br />

recht klein aus, außerdem steht Windowmaker<br />

bereits im Standard-Cygwin-<br />

Repository zur Verfügung.<br />

Wie unter Linux dient auch in der Cygwin-Umgebung<br />

das Startskript startx<br />

zum konzertierten Starten von X plus einem<br />

Display-Manager. Folgender Befehl<br />

öffnet also eine KDE-Session:<br />

$ startx /usr/bin/startkde ‐‐ ‐noU<br />

decoration<br />

Die Startskripte der anderen Desktop-<br />

Umgebungen sind dieselben wie beim<br />

Remote-Aufruf. Vor dem Starten weiterer<br />

Programme müssen Sie DISPLAY per<br />

Hand setzen. Weitere Details erläutert<br />

der Kasten Cygwin-X-Server starten. Mit<br />

XLaunch bietet der Cygwin-Installer außerdem<br />

eine grafische Oberfläche an,<br />

die Anwendern die im Kasten geschilderten<br />

Konsolen-Aufrufe abnimmt 8 .<br />

Fazit<br />

Cygwin portiert das X-Window-System,<br />

OpenSSH und viele weitere Unix- und<br />

Linux-Programme nach Windows. Damit<br />

steht dem Remote-Zugriff auf Linux-<br />

Rechner nichts mehr im Weg. Zufriedenstellend<br />

klappt das allerdings nur über<br />

eine schnelle lokale Netzwerkverbindung<br />

mit geringen Latenzen – eine Einschränkung,<br />

die für Remote-X unter Windows<br />

im Moment lediglich der kostenlose,<br />

aber nicht freie NX-Client û überwindet.<br />

(tle) n<br />

Cygwin-X-Server starten<br />

Über die Eingabe von startxwin in der Cygwin-Konsole oder den<br />

dafür vom Installer angelegten Menüpunkt starten Sie den X-Server<br />

im Mehrfenster-Modus (ein Fenster pro Anwendung mit Windows-<br />

Fensterdekoration).<br />

Ohne Aufrufparameter öffnet das Tool, das die <strong>Skripte</strong> startxwin.<br />

sh und startxwin.bat früherer Cygwin-Versionen ersetzt, ein<br />

Xterm-Fenster mit gesetzter DISPLAY-Variable. Sie dürfen sich dort<br />

direkt mit ssh ‐X IP‐Linux‐PC anmelden und remote grafische<br />

Programme starten. Mehr über die Kommandozeilenparameter von<br />

startxwin sowie die verschiednen Einträge für die Konfigurationsdatei<br />

~/.startxwinrc erläutert die Manpage des Tools û.<br />

XWin.exe oder X<br />

Der Aufruf X startet nur den X-Server. Programme, die darauf zugreifen,<br />

rufen Sie in der Cygwin-Konsole nach dem Setzen der Shell-Variablen<br />

DISPLAY=:0.0 auf. Die entsprechenden Parameter des Cygwin-X-Servers,<br />

die teilweise von denen der Linux-Fassung abweichen,<br />

finden Sie in der beiliegenden Manpage û.<br />

Startx<br />

Die Eingabe von startx koppelt den X-Server an einen lokal in der<br />

Cygwin-Umgebung laufenden Fenstermanager. So versieht beispielsweise<br />

startx /usr/bin/wmaker die Programmfenster mit einer<br />

Windowmaker-Fensterdekoration.<br />

Parameter für den X-Server selbst folgen nach dem Trenner ‐‐, Text<br />

vor dem Trennzeichen interpretiert startx als in der Cygwin-Umgebung<br />

zu startendes Programm, gegebenenfalls plus Optionen:<br />

$ startx /usr/bin/wmaker ‐‐ ‐nodecoration<br />

Dieser Befehl initiiert clientseitig eine Windowmaker-Umgebung, die<br />

den ganzen Desktop oberhalb der Taskleiste einnimmt. Ganz anders<br />

folgender Befehl:<br />

$ startx /usr/bin/wmaker ‐‐ ‐mwextwm<br />

Er verbirgt den Desktop-Hintergrund von Linux, sodass der Windows-<br />

Desktop sichtbar bleibt. Weitere Informationen liefert die X.org-Manpage<br />

von startx û.<br />

03.2014 www.linux-user.de<br />

85


Netz&System<br />

Eisfair-NG<br />

© Rajesh Rajendran Nair, 123RF<br />

Die konsequente Umsetzung dieser Idee<br />

erlaubt den Entwicklern beim aktuellen<br />

Eisfair-NG, sich voll auf die Kernidee des<br />

Projekts zu konzentrieren: die einfache<br />

und schnelle Installation sowie Konfiguration<br />

des Systems sowie verschiedenster<br />

Serverdienste. Als Basis dient dabei<br />

AlpineLinux û, eine sschlanke Distribution<br />

mit speziellen Security-Features, einem<br />

schnellen Paket-Installer und einer<br />

Fülle bereits vorhandener Pakete. Installation<br />

und Betrieb von Eisfair-NG setzen<br />

keine grundsätzlichen Linux-Kenntnisse<br />

voraus und lassen sich mit einfachen<br />

und einheitlichen Mitteln erledigen.<br />

Installation<br />

Schlanker, einfach zu bedienender Server<br />

Modularer<br />

Aufbau<br />

Mit der modular aufgebauten Server-Distribution Eisfair-NG<br />

konfigurieren und verwalten auch unerfahrene Anwender<br />

ohne Schwierigkeiten Systeme und Dienste. Yves Schumann<br />

Das Eisfair-Projekt bietet Installations-<br />

Images û in Versionen für 32- und<br />

64-Bit-PCs an, als Basis dient aktuell<br />

Alpine Linux 2.7. Nach dem Booten des<br />

Installationsmediums und vor der eigentlichen<br />

Installation fragt das Setup 1 zunächst<br />

die wichtigsten Parameter ab.<br />

Dazu zählen beispielsweise die zu verwendende<br />

Festplatte (02_Eisfair-NG_<br />

DriveSelection), Netzwerk-Einstellungen,<br />

falls kein DHCP verwendet werden soll<br />

(03_Eisfair-NG_IP), sowie das Root-Passwort.<br />

Bei den meisten Abfragen erscheinen<br />

bereits sinnvolle Vorgaben, die keiner<br />

weiteren Eingaben bedürfen.<br />

Danach startet die Installation des Systems,<br />

die – je nach Größe der verwendeten<br />

Festplatte – nur wenige Minuten<br />

dauert. Nach einem Neustart steht das<br />

Basis-System zum Einsatz bereit. Jetzt<br />

geht es darum, es mit den gewünschten<br />

Funktionen zu bestücken.<br />

Readme<br />

Eisfair kommt seit etwa zehn Jahren insbesondere<br />

im SOHO-Bereich erfolgreich zum<br />

Einsatz. Dabei glänzt es mit einer einfachen<br />

und einheitlichen Konfiguration über das<br />

gesamte System hinweg.<br />

Ursprünglich handelte es sich bei Eisfair<br />

um eine eigenständige Distribution. Das<br />

erfordert viel Zeit und damit Manpower<br />

für das Übersetzen der einzelnen Pakete<br />

sowie die Pflege der Abhängigkeiten. So<br />

beschritten die Projektmitglieder mit<br />

Eisfair-2 einen anderen Weg und setzten<br />

auf fertige Binärdateien.<br />

Server einrichten<br />

Die gesamte Konfiguration erfolgt über<br />

ein auf Ncurses basierendes Tool, das Sie<br />

auf der Kommandozeile via setup starten<br />

und mit den Pfeiltasten bedienen.<br />

Insbesondere die Navigation in die Untermenüs<br />

hinein und wieder heraus<br />

geht mit den Pfeiltasten einfach von der<br />

Hand. Rein optisch blieb das bewährte<br />

Interface der Vorgängerversion in Eisfair-<br />

NG vollumfänglich erhalten, lediglich die<br />

rein textbasierte Konfiguration fiel weg.<br />

86 www.linux-user.de<br />

03.2014


Eisfair-NG<br />

Netz&System<br />

Via 4 User administration öffnen Sie das<br />

Administrationsmenü zum Bearbeiten<br />

von Benutzern und Gruppen. Dort legen<br />

Sie diese mit den Funktionstasten sehr<br />

einfach an, bearbeiten und löschen sie.<br />

Benötigt ein Paket einen speziellen User-<br />

Account, legt das entsprechende Konfigurationspaket<br />

diesen automatisch an.<br />

Somit müssen Sie sich in der Regel nur<br />

um die Benutzerkonten echter Anwender<br />

kümmern, die sich am System anmelden<br />

möchten.<br />

Die Eisfair-NG-Pakete unterscheiden<br />

sich rein technisch nicht von den ursprünglichen<br />

AlpineLinux-Paketen, teilen<br />

sich jedoch in Funktions- und Konfigurationspakete<br />

auf. Konfigurationspakete<br />

tragen grundsätzlich Namen mit<br />

dem Präfix cui‐, beispielsweise<br />

cui-apache2, cui-mysql oder cui-ssmtp.<br />

Solche Pakete integrieren sich nahtlos in<br />

die Eisfair-NG-Konfigurationsschicht.<br />

Pakete verwalten<br />

Unter dem Menüpunkt 2 Package administration<br />

2 finden Sie die Optionen<br />

zum Einrichten und Entfernen von Paketen.<br />

CUI Eisfair packages listet die speziellen<br />

Eisfair-NG-Konfigurationspakete auf,<br />

All packages zeigt die Liste aller derzeit<br />

4200 verfügbaren Pakete an.<br />

Darüber hinaus gibt die Liste auch<br />

Auskunft darüber, ob neuere Versionen<br />

bereits installierter Pakete zur Verfügung<br />

stehen. Möchten Sie das komplette System<br />

auf den aktuellen Stand bringen,<br />

tippen Sie folgenden Befehl ein:<br />

das System die beim Einrichten mitinstallierten<br />

Pakete ebenfalls wieder, sofern<br />

nicht ein anderes Paket diese benötigt.<br />

Die große Vielfalt des AlpineLinux-Paket-<br />

Pools bietet die Möglichkeit, vielfältige<br />

Dienste zu installieren und zu betreiben,<br />

auch wenn dafür noch keine Eisfair-Konfiguration<br />

existiert. Allerdings nehmen<br />

Sie damit in Kauf, die Konfiguration dieses<br />

Dienstes von Hand vornehmen zu<br />

müssen. Hier ist das Eisfair-Team dankbar<br />

für jede Unterstützung, auf diese Art<br />

und Weise gelangte ein Großteil der Entwickler<br />

zum Projekt.<br />

Dienste konfigurieren<br />

Der Menüpunkt 3 Service administration<br />

dient der Konfiguration der installierten<br />

Dienste. Jedes Paket, das über eine Eisfair-Konfiguration<br />

verfügt, bindet sich<br />

unterhalb dieses Menüpunkts ein 3 . Je<br />

nach Paket variiert die Liste der Menüpunkte.<br />

Zu den üblichen Einträgen für<br />

ein Paket zählen dabei die Anzeige der<br />

Dokumentation, die Konfiguration, eine<br />

Statusabfrage sowie das Starten und<br />

Stoppen des Dienstes.<br />

Die Konfiguration gestaltet sich optisch<br />

stets einheitlich und bietet zu jeder<br />

Option sinnvolle Vorbelegungen. Eine<br />

integrierte Kurzhilfe (05_Eisfair-NG_<br />

PackageConfiguration01) liefert Erklärungen<br />

zu den möglichen Einstellungen.<br />

Weiterhin prüft das Interface jede vorgenommene<br />

Änderung entweder sofort<br />

Eisfair-NG 2.7.1<br />

LU/eisfair/<br />

# apk update && apk upgrade<br />

Das erste Kommando aktualisiert die Indizes<br />

der verwendeten Paket-Repositories,<br />

das zweite bringt alle installierten<br />

Pakete auf den neuesten Stand. Egal, ob<br />

Sie nun via CUI Eisfair packages oder All<br />

packages ein Paket installieren: Sämtliche<br />

Abhängigkeiten löst das System<br />

dabei automatisch auf. Die korrespondierenden<br />

CUI-Pakete von Eisfair richtet<br />

eine Installation des zugehörigen Servers<br />

allerdings nicht automatisch ein.<br />

Das erledigen Sie in einem separaten<br />

Schritt. Bei der Deinstallation entfernt<br />

1 Das Einrichten<br />

des Systems gestaltet<br />

sich dank der<br />

übersichtlichen<br />

Ncurses-Oberfläche<br />

auch für weniger<br />

Linux-versierte Zeitgenossen<br />

zum Kinderspiel.<br />

03.2014 www.linux-user.de<br />

87


Netz&System<br />

Eisfair-NG<br />

SSMTP oder Bind die komfortablen Einstellhilfen<br />

zur Verfügung. Das soll sich<br />

jedoch in Kürze ändern: In den meisten<br />

Fällen lässt sich ein Großteil der vorhandenen<br />

Logik von den bisherigen Eisfair-<br />

Paketen übernehmen, was eine Portierung<br />

erleichtert. Das erlaubt insbesondere<br />

bei einer Migration von Eisfair-1/​2<br />

zu Eisfair-NG die Konfigurationen des<br />

alten Systems weiter zu verwenden.<br />

Ausblick<br />

2 Die Konfigurationsoberfläche erlaubt auch das Verwalten der Software. Derzeit stehen<br />

über 4200 Pakete zur Installation bereit. Allerdings liefert das Projekt nur für eine<br />

Handvoll davon grafische Einstellungsoberflächen mit.<br />

oder spätestens beim Aktivieren der<br />

Konfiguration auf Plausibilität. Das vermeidet<br />

Fehlkonfigurationen so weit wie<br />

möglich.<br />

Aktueller Stand<br />

Die Liste der über das Eisfair-GUI verwaltbaren<br />

Dienste gestaltet sich aufgrund<br />

des recht jungen Systems noch<br />

überschaubar. Bisher stehen nur für weit<br />

verbreitete Dienste wie Apache, MySQL,<br />

Die nächsten Schritte umfassen in erster<br />

Linie die Migration weiterer CUI-Pakete<br />

nach Eisfair-NG. Weiterhin soll das Projekt-Wiki<br />

û die Vorgehensweise des Paketbaus<br />

so detailliert beschreiben. Das<br />

erleichert es externen Entwicklern Ihre<br />

Software als fertiges Paket für Eisfair-NG<br />

bereit zu stellen.<br />

Darüber hinaus ist geplant, die Continuous-Integration-Umgebung<br />

û auf<br />

geeignete Art und Weise auch für externe<br />

Entwickler zur Verfügung zu stellen.<br />

Das bietet eine definierte Build-Umgebung<br />

für alle unterstützten Systeme, sodass<br />

der Entwickler nicht mehr unbedingt<br />

aufwändig für jede Umgebung<br />

selbst ein entsprechendes Build-System<br />

aufsetzen und pflegen muss.<br />

Da sowohl die Distribution Alpine-<br />

Linux als auch das Eisfair-Schwesterprojekt<br />

Fli4l û auf der schlanken C-Standard-Bibliothek<br />

Uclibc basieren, strebt<br />

das Projekt an, in Zukunft noch stärker<br />

die Synergie-Effekte zu nutzen. (tle) n<br />

Weitere Infos und<br />

interessante Links<br />

www. linux‐user. de/ qr/ 31700<br />

Der Autor<br />

3 Die Eisfair-Konfiguration bricht das teils heikle Setup vieler Dienste in einer grafischen<br />

Oberfläche auf das Nötigste herunter und prüft Eingaben direkt auf Plausibilität.<br />

Yves Schumann ist Vorsitzender des net(t)<br />

work(s) eV, des gemeinnützigen Vereins<br />

hinter Eisfair und Fli4l. Der Software-Entwickler<br />

wohnt seit 2006 in der Schweiz<br />

nahe Zürich. Er schraubt nicht nur an<br />

Computern leidenschaftlich herum, sondern<br />

auch an seinem Pickup, betreibt seit<br />

Anfang der 90er-Jahre Shotokan-Karate<br />

und gestaltet zur Entspannung Bonsai.<br />

88 www.linux-user.de<br />

03.2014


Service<br />

IT-Profimarkt<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

Linux-Systeme sowie kompetente Ansprechpartner<br />

zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

hier als zuverlässiges Nachschlagewerk<br />

den Weg. Die im Folgenden gelisteten<br />

Unternehmen beschäftigen Experten auf<br />

ihrem Gebiet und bieten hochwertige<br />

Produkte und Leistungen.<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK sowie Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von Linux-Magazin und<br />

<strong>LinuxUser</strong>.<br />

Online-Suche<br />

Besonders komfortabel finden Sie einen<br />

Linux-Anbieter in Ihrer Nähe online über<br />

die neue Umkreis-Suche unter:<br />

[http://www.it-profimarkt.de]<br />

Weitere Informationen:<br />

Medialinx AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel: +49 (0) 89 / 99 34 11-23<br />

Fax: +49 (0) 89 / 99 34 11-99<br />

E-Mail: anzeigen@linux-user.de<br />

IT-Profimarkt<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de √ √ √ √<br />

imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de √ √ √ √ √<br />

Heinlein Support GmbH 10119 Berlin, Schwedter Straße 8/​9b 030-405051-0 www.heinlein-support.de √ √ √ √ √<br />

TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de √ √ √ √ √<br />

Compaso GmbH 10439 Berlin, Driesener Straße 23 030-3269330 www.compaso.de √ √ √ √ √<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com √ √ √ √<br />

verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de √ √ √<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de √ √ √ √<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de √ √ √ √ √<br />

JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de √<br />

talicom GmbH 30169 Hannover, Calenberger Esplanade 3 0511-123599-0 www.talicom.de √ √ √ √ √<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net √ √ √ √ √<br />

LINET Services GmbH 38118 Braunschweig, Cyriaksring 10a 0531-180508-0 www.linet-services.de √ √ √ √ √ √<br />

beitco behrens it-consulting 38154 Königslutter am Elm, Westernstr. 25 04435-9537330-0 www.beitco.de √ √ √ √ √<br />

OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 0211-239577-0 www.OpenIT.de √ √ √ √ √<br />

Linux-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de √ √ √ √ √<br />

Linuxhotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de √<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de √<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 intevation.de √ √ √ √<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de √ √ √ √<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de √ √ √ √ √<br />

GONICUS GmbH 59755 Arnsberg, Moehnestr. 55 02932-9160 www.gonicus.com √ √ √ √ √<br />

saveIP GmbH 64283 Darmstadt, Saalbaustr. 8-10 06151-666266 www.saveip.de √ √ √ √ √<br />

LinuxHaus Stuttgart 70565 Stuttgart, Hessenwiesenstraße 10 0711-2851905 www.linuxhaus.de √ √ √ √ √<br />

Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de √ √ √ √<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus 4 = Seminaranbieter 5 = Software 6 = Schulung/Beratung <br />

90 www.linux-user.de<br />

03.2014


IT-Profimarkt<br />

Service<br />

IT-Profimarkt<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Waldmann EDV Systeme + Service<br />

74321 Bietigheim-Bissingen,<br />

Pleidelsheimer Str. 25<br />

07142-21516 www.waldmann-edv.de √ √ √ √ √<br />

in-put Das Linux-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de √ √ √ √ √ √<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de √ √ √<br />

Linux Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com √ √ √ √ √<br />

LinuxLand International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de √ √ √ √ √ √<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de √ √ √ √ √<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstraße 7 08457-931096 www.b1-systems.de √ √ √ √ √<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de √ √ √ √ √ √<br />

Tuxedo Computers GmbH 86343 Königsbrunn , Zeppelinstr. 3 0921 -16498 87-0 www.linux-onlineshop.de √ √ √ √<br />

OSTC Open Source Training and<br />

Consulting GmbH<br />

90425 Nürnberg, Waldemar-Klink-Str. 10 0911-3474544 www.ostc.de √ √ √ √ √ √<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de √ √ √<br />

pascom - Netzwerktechnik GmbH & Co. KG 94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net √ √ √ √ √<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch √ √ √<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch √ √ √<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch √ √ √ √ √<br />

Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 0039 0471 56 41 11 www.wuerth-phoenix.com √ √ √ √<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus 4 = Seminaranbieter 5 = Software 6 = Schulung/Beratung <br />

03.2014 www.linux-user.de<br />

91


Seminare<br />

Service<br />

DiD you<br />

know?<br />

WusstEn siE’s?<br />

Linux-Magazin und <strong>LinuxUser</strong><br />

haben ein englisches<br />

Schwester magazin!<br />

Am besten, Sie informieren gleich<br />

Ihre Linux-Freunde in aller Welt...<br />

www.linux-magazine.com<br />

03.2014 www.linux-user.de<br />

93<br />

LMI_3-9h_german_1609-2013.indd 1<br />

16.09.2013 16:53:45 Uhr


Service<br />

Impressum<br />

Impressum<br />

<strong>LinuxUser</strong> ist eine monatlich erscheinende Publikation der<br />

Linux New Media, eines Geschäftsbereichs der Medialinx AG.<br />

Anschrift Putzbrunner Str. 71<br />

81739 München<br />

Telefon: (089) 99 34 11-0<br />

Fax: (089) 99 34 11-99<br />

Homepage<br />

Artikel und Foren<br />

Abo/Nachbestellung<br />

E-Mail (Leserbriefe)<br />

E-Mail (Datenträger)<br />

Abo-Service<br />

Pressemitteilungen<br />

Chefredakteur<br />

Stellv. Chefredakteur<br />

Redaktion<br />

Linux-Community<br />

Datenträger<br />

Ständige Mitarbeiter<br />

Grafik<br />

Sprachlektorat<br />

Produktion<br />

Druck<br />

Geschäftsleitung<br />

Mediaberatung<br />

D / A / CH<br />

USA / Kanada<br />

Andere Länder<br />

http://www.linux-user.de<br />

http://www.linux-community.de<br />

http://www.linux-user.de/bestellen/<br />

<br />

<br />

<br />

<br />

Jörg Luther (jlu, v. i. S. d. P.)<br />

<br />

Andreas Bohle (agr)<br />

<br />

Thomas Leichtenstern (tle)<br />

<br />

Andreas Bohle (agr)<br />

<br />

Thomas Leichtenstern (tle)<br />

<br />

Mirko Albrecht, Erik Bärwaldt, Falko Benthin,<br />

Mario Blättermann, Marko Dragicevic, Thomas Drilling,<br />

Florian Effenberger, Karsten Günther, Frank Hofmann,<br />

Christoph Langer, Tim Schürmann, Dr. Karl Sarnow,<br />

Vincze-Áron Szabó, Uwe Vollbracht<br />

Elgin Grabe (Titel und Layout)<br />

Bildnachweis: Stock.xchng, 123rf.com, Fotolia.de u. a.<br />

Astrid Hillmer-Bruer<br />

Christian Ullrich<br />

<br />

Vogel Druck und Medienservice GmbH & Co. KG<br />

97204 Höchberg<br />

Brian Osborn (Vorstand,<br />

verantwortlich für den Anzeigenteil)<br />

<br />

Hermann Plank (Vorstand)<br />

<br />

Petra Jaser<br />

<br />

Tel.: +49 (0)89 / 99 34 11 24<br />

Fax: +49 (0)89 / 99 34 11 99<br />

Michael Seiter<br />

<br />

Tel.: +49 (0)89 / 99 34 11 23<br />

Fax: +49 (0)89 / 99 34 11 99<br />

Ann Jesse<br />

<br />

Tel.: +1 785 841 88 34<br />

Darrah Buren<br />

<br />

Tel.: +1 785 856 3082<br />

Penny Wilby<br />

<br />

Tel.: +44 1787 21 11 00<br />

Es gilt die Anzeigenpreisliste vom 01.01. 2014.<br />

Pressevertrieb<br />

MZV Moderner Zeitschriften Vertrieb GmbH & Co. KG<br />

Ohmstraße 1<br />

85716 Unterschleißheim<br />

Tel.: (089) 3 19 06-0<br />

Fax: (089) 3 19 06-113<br />

Abonnentenservice Gudrun Blanz (Teamleitung) <br />

D / A / CH Postfach 1165<br />

74001 Heilbronn<br />

Telefon: +49 (0)7131 27 07-274<br />

Fax: +49 (0)7131 27 07 -78-601<br />

Abo-Preise <strong>LinuxUser</strong> Deutschland Österreich Schweiz Ausland EU<br />

No-Media-Ausgabe<br />

(ohne Datenträger 1 )<br />

€ 5,95 € 6,70 Sfr 11,90 (siehe Titel)<br />

DVD-Ausgabe<br />

(mit 2 Datenträgern)<br />

€ 8,50 € 9,35 Sfr 17,00 (siehe Titel)<br />

Jahres-DVD<br />

(Einzelpreis)<br />

€ 14,95 € 14,95 Sfr 18,90 € 14,95<br />

Jahres-DVD<br />

(zum Abo 2 )<br />

€ 6,70 € 6,70 Sfr 8,50 € 6,70<br />

Mini-Abo<br />

(3 Ausgaben)<br />

€ 3,00 € 3,00 Sfr 4,50 € 3,00<br />

Jahres-Abo<br />

(No-Media-Ausgabe)<br />

€ 60,60 € 68,30 Sfr 99,90 € 81,00<br />

Jahres-Abo<br />

(DVD-Ausgabe)<br />

€ 86,70 € 95,00 Sfr 142,80 € 99,00<br />

Preise Digital Deutschland Österreich Schweiz Ausland EU<br />

Heft-PDF<br />

(Einzelausgabe)<br />

€ 5,95 € 5,95 Sfr 7,70 € 5,95<br />

Digi-Sub<br />

(12 Ausgaben)<br />

€ 60,60 € 60,60 Sfr 78,70 € 60,60<br />

Digi-Sub<br />

(zum Abo 2 )<br />

€ 12,00 € 12,00 Sfr 12,00 € 12,00<br />

HTML-Archiv<br />

(zum Abo 2 )<br />

€ 12,00 € 12,00 Sfr 12,00 € 12,00<br />

Preise Kombi-Abos Deutschland Österreich Schweiz Ausland EU<br />

Mega-Kombi-Abo<br />

(LU plus LM 3 )<br />

€ 143,40 € 163,90 Sfr 199,90 € 173,90<br />

(1) Die No-Media-Ausgabe erhalten Sie ausschließlich in unserem Webshop unter<br />

http://www.medialinx-shop.de, die Auslieferung erfolgt versandkostenfrei.<br />

(2) Ausschließlich erhältlich in Verbindung mit einem Jahresabonnement der<br />

Print- oder Digital-Ausgabe von <strong>LinuxUser</strong>.<br />

(3) Das Mega-Kombi-Abo umfasst das <strong>LinuxUser</strong>-Abonnement (DVD-Ausgabe)<br />

plus das Linux-Magazin-Abonnement inklusive DELUG-Mitgliedschaft<br />

(monatliche DELUG-DVD) sowie die Jahres-DVDs beider Magazine.<br />

Informationen zu anderen Abo-Formen und weiteren Produkten der Medialinx AG<br />

finden Sie in unserem Webshop unter http://www.medialinx-shop.de.<br />

Gegen Vorlage eines gültigen Schülerausweises oder einer aktuellen Immatrikulationsbescheinigung<br />

erhalten Schüler und Studenten eine Ermäßigung von 20 Prozent<br />

auf alle Abo-Preise. Der Nachweis ist jeweils bei Verlängerung neu zu erbringen.<br />

Bitte teilen Sie Adressänderungen unserem Abo-Service ()<br />

umgehend mit, da Nachsendeaufträge bei der Post nicht für Zeitschriften gelten.<br />

Linux ist ein eingetragenes Warenzeichen von Linus Torvalds und wird von uns mit<br />

seiner freundlichen Genehmigung verwendet. »Unix« wird als Sammelbegriff für die<br />

Gruppe der Unix-ähnlichen Betriebssysteme (wie beispielsweise HP/UX, FreeBSD,<br />

Solaris, u.a.) verwendet, nicht als Bezeichnung für das Trademark »UNIX« der Open<br />

Group. Der Linux-Pinguin wurde von Larry Ewing mit dem Pixelgrafikprogramm<br />

»The GIMP« erstellt.<br />

Eine Haftung für die Richtigkeit von Veröffentlichungen kann – trotz sorgfältiger Prüfung<br />

durch die Redaktion – vom Verlag nicht übernommen werden. Mit der Einsendung<br />

von Manuskripten oder Leserbriefen gibt der Verfasser seine Einwilligung zur<br />

Veröffent lich ung in einer Publikation der Medialinx AG. Für unverlangt eingesandte<br />

Manuskripte oder Beiträge übernehmen Redaktion und Verlag keinerlei Haftung.<br />

Autoreninformationen finden Sie unter http://www.linux-user.de/Autorenhinweise.<br />

Die Redaktion behält sich vor, Einsendungen zu kürzen und zu überarbeiten. Das exklusive<br />

Urheber- und Verwertungsrecht für angenommene Manus kripte liegt beim<br />

Verlag. Es darf kein Teil des Inhalts ohne schriftliche Genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden.<br />

Copyright © 1999 - 2014 Medialinx AG ISSN: 1615-4444<br />

94 www.linux-user.de<br />

03.2014


Veranstaltungen/Autoren/Inserenten<br />

Service<br />

Veranstaltungen<br />

17.-18.02.2014<br />

SEP to the Top<br />

Hotel „Das Tegernsee“<br />

Neureuthstraße 23<br />

83684 Tegernsee<br />

Veranstalter: SEP<br />

http://www.sep.de<br />

17.-20.02.2014<br />

USENIX FAST ’14<br />

Santa Clara, CA, USA<br />

https://www.usenix.org/conference/fast14<br />

25.-27.02.2014<br />

Wearables DevCon 2014<br />

San Francisco, CA, USA<br />

http://wearablesdevcon.com/<br />

26.-27.02.2014<br />

Cloud Expo Europe 2014<br />

London, UK<br />

http://www.cloudexpoeurope.com/<br />

26.-27.02.2014<br />

Data Centre World<br />

London, UK<br />

http://www.datacentreworld.com/<br />

15.-16.03.2014<br />

Chemnitzer Linux-Tage 2014<br />

Hörsaal- und Seminar-Gebäude der Technischen<br />

Universität Chemnitz<br />

Reichenhainer Straße 90<br />

09126 Chemnitz<br />

http://chemnitzer.linux-tage.de/2014/<br />

22.03.2014<br />

13. Augsburger Linux-Info-Tag<br />

Hochschule Augsburg<br />

Campus am Roten Tor<br />

Fachbereich Informatik<br />

86161 Augsburg<br />

http://www.luga.de/Aktionen/LIT-2014/<br />

02.-04.04.2014<br />

USENIX NSDI ’14<br />

Seattle, WA, USA<br />

https://www.usenix.org/conference/nsdi14<br />

02.-05.04.2014<br />

LibreGraphicsMeeting 2014<br />

Paulinum, Hauptgebäude<br />

Universität Leipzig<br />

Augustusplatz 10-11<br />

04109 Leipzig<br />

http://libregraphicsmeeting.org/2014/<br />

04.-05.04.2014<br />

Grazer Linux-Tage 2013<br />

FH Joanneum<br />

Alte Poststraße 149<br />

8020 Graz, Österreich<br />

http://www.linuxtage.at<br />

Autoren<br />

Inserenten<br />

Andreas Reitmaier Drum-Sequencer Giada im Test (44)<br />

Dr. Karl Sarnow Dokumente in Google Drive verwalten mit Insync (64)<br />

Erik Bärwaldt Allrounder ExTiX 14 (10),<br />

Security-Toolbox Parrot OS (14)<br />

Ferdinand Thommes Systemd in der Praxis mit Siduction (6)<br />

Frank Hofmann Audioplayer für die Konsole (48)<br />

Harald Zisler Dialoge in Shellskripten (30)<br />

Jörg Luther Editorial (3)<br />

Karsten Günther <strong>Skripte</strong> wandeln mit dem Shell Compiler (40)<br />

Marcus Nasarek Bash und Power Shell im Vergleich (20)<br />

Mario Blättermann Markdown-Editor Retext im Überblick (54)<br />

Peter Kreußel Versteckte Features von Inkscape (58),<br />

Laufzeitumgebung Cygwin unter Windows (80)<br />

Thomas Leichtenstern Dokumente in Google Drive verwalten mit Insync (64),<br />

Neues auf den Heft-DVDs (97)<br />

Thomas Winde Audioplayer für die Konsole (48)<br />

Tim Schürmann Styleguides für guten Skriptstil (24)<br />

Uwe Vollbracht Angetestet: Neue Software im Überblick (18)<br />

Valentin Höbel Traffic filtern mit Safesquid (68)<br />

Vincze-Aron Szabo Mindmapping mit Labyrinth (76)<br />

Yves Schumann Schlanke Distro Eisfair-NG im Test (86)<br />

Android Apps & Tipps www.android-user.de 57<br />

Android User www.android-user.de 63<br />

Fernschule Weber GmbH www.fernschule-weber.de 19<br />

Grazer Linux-Tage www.linuxtage.at 91<br />

Linux Magazine www.linux-magazine.com 93<br />

Linux-Community www.linux-community.de 93<br />

Linux-Hotel www.linuxhotel.de 43<br />

Linux-Magazin www.linux-magazin.de 51<br />

<strong>LinuxUser</strong> www.linuxuser.de 73, 95<br />

Medialinx IT-Academy www.medialinx-academy.de 93<br />

Chemnitzer Linux-Tage chemnitzer.linux-tage.de/2014 92<br />

PlusServer AG www.plusserver.de 13, 17, 53, 67, 79, 89<br />

Raspberry Pi Geek www.raspberry-pi-geek.de 75<br />

Strato AG www.strato.de 100<br />

Tuxedo Computers GmbH www.linux-onlineshop.de 99<br />

Verion GmbH www.verion.de 2<br />

Webtropia www.webtropia.com 23<br />

03.2014 www.linux-user.de<br />

95


<strong>Vorschau</strong><br />

auf 04/2014<br />

Die nächste Ausgabe<br />

erscheint am 20.03.2014<br />

Linux für den mobilen Einsatz<br />

Der Einsatz von Linux auf einem mobilen<br />

Gerät stellt andere Anforderungen<br />

an das System als bei einem Desktop-PC.<br />

Aufgrund der Hardware wünschen sich<br />

viele Anwender ein schlankes und optimal<br />

abgestimmtes System. Da spielt<br />

Linux klar seine Vorteile aus, denn nur<br />

mit freier Software haben Sie die Freiheit,<br />

sich die Komponenten zu einem<br />

stimmigen Gesamtkonzept zusammenzustellen,<br />

das Ihren Anforderungen genau<br />

entspricht. Das reicht vom abgespeckten<br />

Mini-System bis zum Multiboot-Spezialisten<br />

für alle Fälle.<br />

Systemd – die neue Mitte<br />

Wenn es nach den Entwicklern des Systemd<br />

ginge, übernähme das neue Init-<br />

System die Kontrolle über das gesamte<br />

System. Die Idee ist clever und das Konzept<br />

bestechend, aber nicht ohne Grund<br />

gibt es kritische Stimmen.<br />

Videoschnitt mit Lightworks<br />

Monat um Monat mussten wir auf die<br />

neue Version warten, nun ist sie da: Der<br />

Videoeditor Lightworks 11.5 verspricht<br />

einfaches Arbeiten mit dem Multimediamaterial.<br />

Aber Papier ist geduldig – und<br />

so machen wir den Praxistest.<br />

© Gokoroko, sxc.hu<br />

Die Redaktion behält sich vor,<br />

Themen zu ändern oder zu streichen.<br />

Ausgabe 01/2014 ist am 09.01.2014 erschienen<br />

Einstieg in Linux<br />

EasyLinux ist Ihnen schon zu fortgeschritten?<br />

In dieser Ausgabe bringen wir<br />

Beiträge, die „bei null“ anfangen, also<br />

nur voraussetzen, dass Sie Erfahrungen<br />

mit Windows haben. Was ist das Besondere<br />

bei Linux, warum laufen keine Windows-Programme,<br />

und wieso benutzt<br />

man so oft die Shell?<br />

KDE versus Unity<br />

OpenSuse setzt auf den in Deutschland<br />

erfundenen Desktop KDE, Ubuntu hat<br />

früher Gnome als Standarddesktop verwendet,<br />

liefert aber seit einiger Zeit die<br />

Oberfläche Unity aus. Wir vergleichen<br />

die Features und Konzepte und helfen<br />

Ihnen zu entscheiden, mit welcher Oberfläche<br />

Sie am besten arbeiten können.<br />

MAGAZIN<br />

Ausgabe 04/2014 erscheint am 06.03.2014<br />

© Tom De Spiegelaere, 123RF<br />

SDN: Magische Netzwerke<br />

Software-defined Networking (SDN) versucht,<br />

untere Netzebenen zu virtuellen<br />

Services zu abstrahieren. Der nächste<br />

Schwerpunkt beleuchtet die Technik anhand<br />

eines wirklich erhellenden Knowhow-Artikels<br />

sowie Beiträgen über<br />

Open Flow, SDN-Funktionen in gängigen<br />

Cloud-Suites sowie zum bevorstehenden<br />

Open Daylight.<br />

Umfrage-Tools<br />

Marktforscher, Studenten oder Firmen,<br />

die ein Meinungsbild der Webbewohner<br />

einholen und dieses anschließend statistisch<br />

auswerten wollen, sollten sich das<br />

nächste Magazin kaufen. In einem Vergleich<br />

stellen wir eine Auswahl der ausgefeiltesten<br />

Umfragetools vor, die nicht<br />

nur beim Sammeln der Stimmen helfen,<br />

sondern auch beim Auswerten.<br />

96 www.linux-user.de<br />

03.2014


Heft-DVD-Inhalt<br />

Service<br />

Neues auf den Heft-DVDs<br />

Parrot Security OS 0.8.1<br />

Um Schwachstellen im Netzwerk effektiv<br />

und ohne die aufwendige Installation vieler<br />

einzelner Programme aufdecken zu<br />

können, bietet Parrot Security OS 0.8.1<br />

eine stattliche Zahl von Werkzeugen als installierbares<br />

Live-System, bei dem primär<br />

Penetrationstests im Vordergrund stehen.<br />

Die meisten Zusatzprogramme der Distribution<br />

finden Sie im Untermenü Parrot.<br />

Darüber hinaus bietet Parrot zum anonymen<br />

Surfen das Vidalia-Frontend für den<br />

Aufbau einer Verbindung über den Tor-<br />

Dienst. Um Schädlingen auf die Spur zu<br />

kommen, bringt es den freien Virenscanner<br />

ClamAV mit. Zum Login verwenden Sie<br />

den Nutzernamen root mit dem Passwort<br />

toor. Seite A der ersten DVD enthält die<br />

64-Bit-Variante, Seite B das 32-Bit-Pendant.<br />

ExTiX 14<br />

Die aus Schweden stammende Distribution<br />

ExTiX 14 möchte als Allrounder für aktuelle<br />

Hardware überzeugen. Demzufolge<br />

liegt die auf Ubuntu basierende Distribution<br />

ausschließlich in einer 64-Bit-Variante<br />

vor und kann somit nicht auf Rechnern mit<br />

32-Bit-Architektur eingesetzt werden. Da<br />

solche Prozessoren aber seit vielen Jahren<br />

nicht mehr gebaut werden, dürfte das für<br />

die meisten Anwender keine Rolle spielen.<br />

Korora 20 „Peach“ Maté<br />

Die auf Fedora basierende Distribution<br />

Korora 20 „Peach“ adressiert mit ihrer eingängigen<br />

Nutzeroberfläche auch Linux-<br />

Ein- und Umsteiger. Auf ihrer Webseite bietet<br />

das Projekt die Distribution mit fünf verschiedenen<br />

Desktops an, auf Seite A der<br />

Heft-DVD 1 steht die 64-Bit-Variante mit<br />

Maté als Oberfläche zum Einsatz bereit.<br />

Linux Lite 1.0.8<br />

Die auf Ubuntu 12.04.3 LTS basierende Distribution<br />

adressiert unter anderem Besitzer<br />

älterer Rechner, davon zeugt der ressourcenschonende<br />

XFCE-Desktop. Unter anderem<br />

ergänzten die Maintainer die Distribution<br />

um ein Lite Software Center sowie einen<br />

Lite User Manager. Als Unterbau<br />

kommt ein Kernel in Version 3.8 vom „Hardware-Enablement“-Stack<br />

zum Einsatz, der<br />

besseren Hardware-Support verspricht.<br />

Simplicity Linux 14.1<br />

Puppy Linux entwickelte sich in den letzten<br />

Jahren zu einem erstklassigen, universell<br />

einsetzbaren Betriebssystem für ältere<br />

Hardware. Trotzdem gibt es noch Verbesserungsbedarf<br />

für Anwender, die das System<br />

beispielsweise auf einem Netbook<br />

nutzen wollen. Auch Desktop-Nutzer, die<br />

Software wie Gimp oder LibreOffice einsetzen<br />

möchten, haben beim originalen<br />

Puppy einen erhöhten Installationsaufwand.<br />

Das aus Großbritannien stammende<br />

Distribution Simplicity Linux 14.1 hilft diesem<br />

Manko durch eine speziell darauf zugeschnittene<br />

Edition ab.<br />

03.2014 www.linux-user.de<br />

97


Service<br />

Heft-DVD-Inhalt<br />

Siduction 2013.2.1<br />

Siduction 2013.2.1 basiert auf einem<br />

Schnappschuss von Debian „Sid“ vom<br />

30. Dezember 2013. Hinzu kommen ein<br />

eigener Kernel 3.12-6 sowie verschiedene<br />

weitere Anpassungen.<br />

Nicht zuletzt der Einsatz von<br />

Systemd beschert dem System<br />

einen ordentlichen Performance-Zuwachs,<br />

der<br />

sich besonders beim Booten<br />

positiv bemerkbar<br />

macht. Da Siduction das<br />

Rolling-Release-Prinzip<br />

anwendet, aktualisiert<br />

sich die Distribution stets<br />

aufs Neue. Ein Upgrade<br />

wie beispielsweise bei<br />

OpenSuse oder Ubuntu ist<br />

entsprechend nicht mehr nötig.<br />

Seite A der zweiten Heft-<br />

DVD enthält die 64-Bit-Versionen<br />

von Siduction mit den Desktop-Umgebungen<br />

KDE, Gnome,<br />

XFCE, LXDE und Razor-qt. Auf der Rückseite<br />

finden Sie die gleichen Versionen in<br />

der 32-Bit-Spielart. (tle) n<br />

Bei der DVD-Edition von <strong>LinuxUser</strong> ist an dieser Stelle der zweite Heft-Datenträger eingeklebt.<br />

Bitte wenden Sie sich per E-Mail an cdredaktion@linux-user.de, falls es Probleme mit der Disk gibt.<br />

Neue Programme<br />

Beobachter 1.7.8 ist ein auf Java basierender Dateimonitor zur<br />

Überwachung und Ausgabe von Log-Dateien. Sie behalten damit<br />

beliebige Dateien gleichzeitig im Auge und können für jede davon<br />

ein individuelles Highlighting konfigurieren.<br />

Hinter Giada 0.8.2 verbirgt sich eine Musik-Software, das sich für<br />

vielfältige Zwecke eignet. Hauptsächlich zur Arbeit mit Loops konzipiert,<br />

macht es aber auch als Drum-Einheit eine gute Figur und erleichtert<br />

die Integration in andere Projekte über VST und MIDI. Das<br />

Programm verfolgt das Rezept „einfache Oberfläche, geringe Systembelastung,<br />

maximale Möglichkeiten“.<br />

Der Editor Retext 4.1.1 hilft Ihnen beim Erstellen von Markdown-<br />

Dokumenten. Die basieren auf einer sehr einfachen Syntax, die sich<br />

beinahe nahtlos in den Text integriert. Das Ergebnis konvertieren<br />

Sie im Handumdrehen nach HTML und in viele weitere Formate.<br />

Dieses handliche Programm GTK Hash 0.7.0 berechnet und überprüft<br />

Hashwerte von Dateien und Texten. Über 20 verschiedene<br />

Algorithmen kennt die Software, darunter nicht nur die bekannten<br />

MD5 und SHA1, sondern auch exotischere Vertreter.<br />

Hostbasierte IDS wie Tripwire 2.5.22 spüren potenziell unerwünschte<br />

Änderungen auf zu schützenden Rechnern auf. Sie informieren<br />

die Administratoren zeitnah und können so die mit einem<br />

Angriff einhergehenden Schäden eindämmen oder gar verhindern.<br />

Der Downloadmanager Wget 1.15 bringt in seiner aktuellen Version<br />

einige Neuerungen mit. So unterstützt er sehr lange Dateinamen,<br />

kennt eine neue Option namens ‐‐method und akzeptiert<br />

gekürzte URLs in einer Eingabedatei. HTTPS-Support lässt sich über<br />

‐‐https‐only erzwingen, über den Parameter ‐‐secure‐protocol<br />

erhält Wget Support für Perfect Forward Secrecy.<br />

Der in C implementierte Webbrowser Xombrero nutzt die Webkit-<br />

Rendering-Engine und ging aus Xxxterm hervor. Er zählt zu den minimalistischen<br />

Vertretern seiner Gattung und legt großen Wert auf<br />

Sicherheit. Diese soll von Anfang an gegeben sein, ohne dass der<br />

Anwender erst Plugins und Erweiterungen installieren muss.<br />

PC-Basic ist ein Interpreter für den beliebten Basic-Dialekt GW-<br />

Basic. Es kann unter anderem GW-Basic-Programme ausführen<br />

oder deren Quellcode in Textdateien konvertieren.<br />

98 www.linux-user.de<br />

03.2014

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!