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