ubuntuusers.de

12. Juni 2014

Mit dem Sieve Plugin für Dovecot können eintreffende E-Mails nach bestimmten Kriterien in besondere IMAP Ordner verschoben werden. Mails von bestimmten Personengruppen oder Nachrichten mit einem speziellen Betreff können auf diese Weise automatisch in vordefinierten Ordnern abgelegt werden, sodass die manuelle Sortierung entfällt.

Zuerst wird die Dovecot Sieve Erweiterung installiert:

sudo -s
apt-get install dovecot-sieve

Das Sieve Plugin wird nun für den Local Delivery Agent (LDA) oder das LMTP aktiviert. Ich nutze LMTP statt LDA und bearbeite deshalb die Datei „20-lmtp.conf” in /etc/dovecot/conf.d/:

protocol lmtp {
    # Space separated list of plugins to load (default is global mail_plugins).
    mail_plugins = $mail_plugins sieve
}

In der Hauptkonfiguration /etc/dovecot/dovecot.conf werden die Einstellungen für Sieve vorgenommen. Im Beispiel unten werden die Pfade zu verschiedenen Filterdateien mit .sieve – Endung angegeben. Diese Dateien enthalten später den Sieve Code, nach dem die Nachrichten gefiltert und einsortiert werden. „sieve” beschreibt das allgemeine Muster, wie benutzerspezifische Filterdateien auszusehen haben. Eine Filterdatei, die den E-Mail Nutzer „benutzer@server.de” betreffen soll, muss demnach den Dateinamen „benutzer@server.de.sieve” haben. Wenn keine benutzerspezifische Filterdatei gefunden werden kann, wird auf den „sieve_default” Filter ausgewichen. Zuletzt wird noch ein allgemeiner Filter definiert, der für alle Benutzer gilt und die Besonderheit hat, als erster ausgeführt zu werden (sieve_before) – also noch vor den Filtern der einzelnen Benutzer. Er hat damit höchste Priorität. Das ist z.B. beim Filtern von Spam sinnvoll (z.B. Erkennen von Spam-Headern, die von Amavis gesetzt wurden…).

plugin {
    sieve = /var/vmail/sieve/%u.sieve
    sieve_default = /var/vmail/sieve/default.sieve
    sieve_before = /var/vmail/sieve/spam-global.sieve
}

Nun werden noch default und spam-global Sieve Filter angelegt, damit sich Dovecot beim Start nicht wegen fehlender Dateien beschwert:

cd /var/vmail
mkdir sieve
touch default.sieve
touch spam-global.sieve
chown -R vmail:vmail ./

Der Inhalt wird noch nicht festgelegt.

Denkt beim erstellen von Filterregel-Dateien immer daran, die Dateirechte korrekt zu setzen. Eigentümer soll vmail sein (unter dem Dovecot läuft)!

Wie ihr Filterregeln für Sieve schreibt, könnt ihr in auf dieser Seite nachlesen: https://secure.gold.ac.uk/sieve-new/howto.php

Besonders interessant ist der autoresponder, den ihr über Sieve konfigurieren könnt. Wenn ihr über längere Zeit nicht via E-Mail erreichbar seid, könnt ihr darüber automatische Antworten verschicken.

Sieve Filter über den Mailclient verwalten (Managesieve)

Für die verschiedenen Mailclients können ggf. Sieve Addons installiert werden, womit die Verwaltung der Filter für den Nutzer ermöglicht wird. Damit ist er nicht mehr auf den Administrator des Servers angewiesen und kann seine Filter selbst hochladen oder ändern. Ermöglicht wird das über einen zusätzlichen Managesieve Server, der sehr einfach und schnell zu Dovecot hinzugefügt werden kann. Wie das funktioniert, erfahrt ihr hier:
Dovecot Sieve Manager (Managesieve) installieren und einrichten

Über die Dovecot MailboxSettings können für alle E-Mail Postfächer bestimmte Standard-Ordner festgelegt werden, die für jedes Postfach bei Bedarf erstellt werden und nicht mehr von Hand angelegt werden müssen. Ein Anwendungsbeispiel ist z.B. das Bereitstellen eines Junk/Spam-Ordners, den jedes Postfach haben soll, sodass darin z.B. über ein Sieve Filterscript Spam-E-Mails abgelegt werden können.

Die Standardordner werden in der Datei /etc/dovecot/dovecot.conf wie folgt konfiguriert:

namespace inbox {
    mailbox Spam {
        auto = subscribe
        special_use = \Junk
    }

    mailbox Entwürfe { 
        auto = create 
        special_use = \Drafts  
    }
}

Hier wurden zwei Standardordner definiert: Ein Spam-Ordner und ein Verzeichnis für E-Mail Entwürfe. Falls der Ordnername Leerzeichen enthalten soll, muss er in Anführungszeichen gesetzt werden. Der Parameter „auto” kann die Attribute „no”, „create” und „subscribe” annehmen.

  • no: Nicht automatisch erstellen
  • create: Ordner automatisch erstellen
  • subscribe: Ordner automatisch erstellen und von Mailclients abonnieren lassen

Für einen Spam-Ordner wäre die letzte Einstellung „subscribe” sinnvoll. Der Parameter „special_use” gibt eine Funktion für die Mailbox an. „\Junk” sagt den Mailclients, dass dieser Ordner die Funktion hat, Spam E-Mails aufzunehmen. Mit „\Drafts” weiß der Mailclient, dass hier Entwürfe abzulegen sind. Der „special_use” Parameter kann aber auch leer bleiben, wenn es keine Allgemeine Funktion gibt.

Nach der Konfiguration muss Dovecot neu geladen werden:

service dovecot reload

Sobald sich ein Mailclient das nächste Mail einloggt, werden die Standardordner erstellt (sofern nicht schon vorhanden) und ggf. in die Abos aufgenommen, sodass der Benutzer über neue Nachrichten in diesen Ordnern informiert wird.

Von Ubuntu Lucid bis Utopic, versorgt Paolos PPA seit kurzer Zeit Nutzer Ubuntus mit aktuellen Copy.com Client Paketen:
 
 
 

1
2
3
sudo add-apt-repository ppa:paolorotolo/copy
sudo apt-get update
sudo apt-get install copy

Auch ohne PPA besteht direkter Zugriff auf die Pakete:

Indicator Fix

Copy Client Bug (Quelle: webupd8)

Copy Client Bug (Quelle: webupd8)

Dank webupd8, steht nun auch ein Fix für den Ubuntu-eigenen Unity Desktop zur Verfügung. Betroffene Distributionen sind Ubuntu 13.10 und aufwärts. Ob seitens Barracuda bereits an einer Lösung gearbeitet wird, bleibt nur zu hoffen.

Die veränderten Dateien werden als Archiv direkt im Ordner der Copy.com Client Installation entpackt.

Der Pfad zum Client lautet im Falle einer Installation aus dem PPA “/opt/copy-client”:

1
cd && wget https://github.com/hotice/webupd8/raw/master/libdbusmenu-gtk-$(arch).tar.gz -O - | sudo tar -C /opt/copy-client -xvzf -

Wurde die Installation manuell durchgeführt, muss der Pfad entsprechend angepasst werden.

Noch keinen Copy.com Account? (Referral-Link mit 5GB extra für dich und mich)

Nachdem ich zu dem Thema schon einen Beitrag für den Apache Webserver veröffentlicht und meinen Server heute Nacht auf Nginx umgestellt habe, darf natürlich auch die Umstellung für Nginx nicht fehlen ;)

Wie ich im Beitrag zum Apache Webserver schon erwähnt habe, ist laut TMG (=> TMG §15) das Speichern von IP-Adressen über den Webserver nicht zulässig, außer es ist zwingend Notwendig, um dem Benutzer einen Dienst anbieten zu können. Die Ausnahme trifft bei meinem Blog (und den meisten anderen) aber nicht zu, sodass ich gesetzlich verpflichtet bin, die IP-Adressen meiner Besucher aus den Logfiles zu entfernen.

Unter Ubuntu Server 14.04 findet man im Nginx Konfigurationsverzeichnis eine Datei nginx.conf. Dort wird in den http-Bereich folgendes eingetragen:

log_format ipkiller '[ip-addr] - $remote_user [$time_local] '
                    '"$request" $status $bytes_sent '
                    '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /var/log/nginx/access.log ipkiller;
# access_log off;

Ein neues Logformat „ipkiller” wird eingerichtet und vom accesslog genutzt. Bei diesem neuen Profil werden die IP-Adressen nicht erfasst und der Platzhalter [ip-addr] eingefügt. Wer will, kann den Accesslog auch ganz abschalten – im normalen Betrieb hat man davon sowieso keinen Nutzen. Es sei denn, man analysiert den Accesslog mit speziellen Tools, um Zugriffsstatistiken aufzustellen.

Anders als bei Apache kann für die Errorlogs leider kein Format festgelegt werden. Der Errorlog kann aber abgeschaltet werden (nicht zu empfehlen!):

error_log off;

Pünktlich zur heute startenden Fußball-Weltmeisterschaft in Brasilien gibt es von Mozilla und Goal.com passende Erweiterungen sowohl für den Desktop- als auch für den Android-Browser.

Mozilla und Goal.com haben eine SocialAPI-Erweiterung für Firefox veröffentlicht, welche alle Informationen zur Fußball-Weltmeisterschaft in Brasilien in den Browser holt, nicht nur Neuigkeiten, auch Live-Ergebnisse. Per Einstellung lässt sich entweder eine landesspezifische Edition, zum Beispiel für Deutschland, oder eine internationale Edition nutzen. Die Erweiterung funktioniert auch über die WM hinaus, denn es handelt sich dabei um eine allgemeine Fußball-Erweiterung, die WM dürfte aber den genau richtigen Anlass bieten, sich die Goal.com-Sidebar anzusehen.

Auch für Android haben Mozilla und Goal.com eine Erweiterung veröffentlicht. Diese erweitert den Homescreen von Firefox Mobile für Android um ein weiteres Panel mit den neusten Fußballnews von Goal.com, natürlich auch wieder zur WM ganz besonders interessant. Auch hier lässt sich entweder eine landesspezifische oder eine internationale Edition nutzen.

Darüber hinaus hat Mozilla eine Sammlung von Apps passend zur Fußball-WM zusammengestellt, darunter auch eine App von kicker.de. Die dort aufgeführten Apps funktionieren nicht nur für Firefox OS, sondern teilweise auch auf dem Desktop.

Heute Nacht habe ich mich von meinem Apache Webserver verabschiedet und bin auf Nginx („Engine X”) umgestiegen. Dieser Blog und alle anderen Sites auf meinem trashserver.net laufen nun mit dem superschlanken, schnellen Nginx Webserver, der sich vor allem als Proxy einen Namen gemacht hat und sich immer größerer Beliebtheit erfreut. Ja, nun bin ich auch einer von den Nginx-Hipstern ;)

Die Konfiguration war total neu für mich sodass ich einige Zeit damit verbracht habe, die Nginx Konfiguration zu verstehen. Ein wichtiger Unterschied zu Apache ist ja auch, dass Rewrite Rules nicht ein .htaccess Dateien geschrieben werden können. Im Allgemeinen finde ich Nginx weniger bequem – aber man soll dafür ja mit mehr Geschwindigkeit und vor allem weniger Serverlast entschädigt werden.

Gefühlt ist der Blog tatsächlich etwas schneller geworden, was aber nicht zuletzt auch daran liegt, dass ich PHP noch zusätzlich mit APC (PHP Cache) und Memcached ausgerüstet habe. Dazu kommt noch das WordPress Plugin „Cachify”, welches statische Dateien generiert, die dann von Nginx direkt ausgeliefert werden können. Das beschleunigt auch noch erheblich.

Pingdom meint, mein Blog sei nun schneller als 92% aller getesteten Websites. Dann bin ich ja zufrieden. Oder ließe sich das nicht noch weiter optimieren? … ;)

Da sitzt man vor seinem Ubuntu-Upgrade und eine unbedachte Handbewegung später hat man das Upgrade abgebrochen. In einem solchen Fall sollte man das Upgrade natürlich fortsetzen, wer möchte schon gerne ein halbfertiges System. Wurde die SSH Verbindung unterbrochen, muss sich im ersten Schritt mit dem Server verbunden werden. Anschließend gibt man im Terminal folgendes ein:

dpkg --configure -a
apt-get dist-upgrade
apt-get autoremove
apt-get autoclean
reboot

Danach sollte der Server auf dem aktuellsten Stand sein und das Upgrade durchgeführt sein. Sollte man das Upgrade vor dem Umstellen der Paketlisten abgebrochen haben, dürfte ein einfaches „do-release-upgrade“ genügenum den Upgrade-Vorgang erneut zu starten.

Gerade eben konnte ich meine E-Mails mit Thunderbird nicht mehr abrufen, das Einloggen ist fehlgeschlagen. Da es vor einigen Minuten noch funktioniert hatte und ich nichts geändert hatte, schaute ich mir mal das 

maillog
  auf dem Server an:

Jun 12 09:22:58 mail dovecot: imap-login: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=20): user=<kontakt@finnchristiansen.de>, method=CRAM-MD5, rip=87.162.226.236, lip=81.169.159.20, TLS

Dovecot ist sogar so freundlich und erklärt, warum ich meine E-Mails nicht mehr abrufen konnte. Pro User und IP sind nur 20 Verbindungen erlaubt, was eigentlich ausreichen sollte. Bei mehreren Geräten an einem Internetanschluss scheint diese Grenze aber wohl manchmal erreicht zu werden. In der Datei /etc/dovecot/dovecot.conf (oder im conf.d Ordner, je nachdem wie man seine Dovecot Konfiguration organisiert hat) habe ich die entsprechende Zeile nun geändert:

protocol imap {
  mail_plugins = $mail_plugins imap_quota
  imap_idle_notify_interval = 30 mins
  mail_max_userip_connections = 32
}

Nach einem Dovecot-Neustart sind die Login-Probleme nun verschwunden.

Ich habe hier eine Textdatei in der pro Zeile eine IP-Nummer steht. Allerdings geht es wild durcheinander. Ziel ist es nun die ganzen Nummern zu sortieren. Mittels folgendem Konstrukt konnte ich die ZSH (sollte auch mit Bash und Co funktionieren) überreden die Nummern zu ordnen.

cat unsortiert.txt | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | uniq >> sortiert.txt

Doppelt aufgeführte Nummern werden hierbei auch gleich auf einen Eintrag minimiert.

11. Juni 2014

Gemeinsam mit der Telefónica-Tochter TokBox möchte Mozilla Firefox um Funktionen zur Webzeitkommunikation erweitern. Das unter dem Namen Loop entwickelte Projekt ist nun in einer frühen Fassung Teil der Nightly-Versionen von Firefox.

Ende Mai erst haben Mozilla und TokBox ihre Zusammenarbeit offiziell angekündigt, nun ist Loop, ehemals Talkilla, seit wenigen Tagen in den Nightly-Versionen von Firefox integriert. Diese Integration stellt allerdings nur einen frühen Zwischenstand der Entwicklung dar – wie man vor allem optisch schnell erkennt. Das Ganze macht sogar einen noch etwas kaputteren Eindruck als die Testbuilds von vor zwei Wochen. Zumindest die Kernfunktionalität – das Generieren eines Links und das Führen eines kostenlosen Videotelefonats darüber – funktioniert grundsätzlich. Zur Generierung eines solchen Links, den man an seinen Gesprächspartner weitergeben muss, gelangt man über das Sprechblasen-Symbol in der Hauptsymbolleiste. Wer dieses nicht findet, muss es eventuell erst über Menü → Anpassen in die Oberfläche von Firefox verschieben. Eine Kontaktliste ist geplant, genauso wie ein Import von Google-Kontakten, dies ist aber noch nicht Bestandteil der Nightly-Versionen von Firefox. Mehr Details zur Motivation hinter Loop gibt es im Artikel zur Ankündigung.

In diesem Zustand ist der Einsatz natürlich noch nicht zu empfehlen, aber es ist fest davon auszugehen, dass hier relativ schnell relativ große Fortschritte erzielt werden, da die Partnerschaft einen recht straffen Zeitplan zur Auslieferung vorsieht. Mockups von der Loop-Integration in den Browser habe ich bereits kürzlich veröffentlicht, neu sind die folgenden Mockups der Loop Weboberfläche:

GIMP (GNU Image Manipulation Program) ist eine gute und vor allem kostenlose Alternative zu Photoshop.

Für Grafikdesigner oder Fotografen die professionell mit Photoshop arbeiten ist GIMP sicher kein Ersatz. Dennoch bietet GIMP sehr viele Funktion um privat Bilder und Fotos zu bearbeiten. Ich nutze es gerne.

Wer sich daran stört, dass nach dem Start von GIMP drei Fenster geöffnet sind, der kann das ganz einfach im Menü ändern. Das funktioniert bei GIMP ab Version 2.8, seit Ubuntu 12.10.



Wähle unter dem Punkt Fenster den Einzelfenster-Modus.





Nun sind alle drei Fenster in einem vereint. Jetzt ist GIMP noch übersichtlicher und
es macht noch mehr Spaß damit zu arbeiten. :-)



Du hast GIMP noch nicht installiert? 

GIMP findest du im Software-Center oder du öffnest einfach das Terminal und gibst folgenden Befehl und danach dein Passwort ein: 

sudo apt-get install gimp

10. Juni 2014

Für was ist das gut?

Um den Netzwerktraffic unter Linux zu analysieren, gibt es zahlreiche Werkzeuge wie ethstatus, iptraf oder iftop. Allerdings zeigen die meisten Programme nur von und zu welcher IP der Datenverkehr durch die Leitung geschickt wird oder wie viel gerade fließt. Möchte man dagegen wissen, welcher Prozess den meisten Netzerwerkverkehr gerade im Moment verursacht, tappt man bei den genannten im Dunkeln. Das Licht schafft hier das kleine Kommandozeilenwerkzeug Nethogs.

Allerdings gibt es vorab erwähnt auch ein paar kleinere Feature-Lücken: So kann keine Sortierung nach Programmnamen stattfinden, Nethogs muss immer mit Root-Rechten ausgeführt werden, zeigt nur den aktuellen Netzwerkverkehr und lässt UDP unter den Tisch fallen (relevant zum Beispiel für BitTorrent).

Installation

Das Progamm findet sich eigentlich in jedem Repositorium einer Linux-Distribution, zum Beispiel Ubuntu oder Arch Linux. Notfalls kann man aber auch den Quellcode selbst kompilieren.

Verwendung

Grundsätzlich lässt sich Nethogs mit dem gleichnamigen Kommandozeilen-Befehl ausführen. Jedoch sind dazu Root-Rechte notwendig.

$ sudo nethogs

Standardmäßig lauscht Nethogs an eth0. Verwendet man allerdings WLAN übergibt man – für die erste WLAN-Schnittstelle – wlan0 als Parameter.

$ sudo nethogs wlan0

Sollte das immer noch nicht zu Erfolg führen, gibt der folgende Befehl alle lokalen Netzwerkschnittstellen aus.

$ ifconfig

Die gewünschte Schnittstelle dann Nethogs entsprechend als Parameter übergeben. Danach präsentiert sich Nethogs als ncurses-Oberfläche wie im Screenshot.

Aussehen von Nethogs: tabellenartig mit 6 Spalten. Eine Spalte für die PID, der Nutzer der das Programm ausführt, der Programmname, die Netzwerkschnittstelle sowie die Menge an gesendeten und empfangenen Daten.
So tabellenartig sieht Nethogs aus.

Die einzelnen Spalten sind eigentlich selbsterklärend. Zudem kann man über Tastenkürzel Nethogs ein wenig anpassen; kurz die meiner Meinung nach wichtigsten Optionen:

  • M: Zwischen den Einheiten KB/s, KB, B oder MB umschalten
  • R: Sortierung nach empfangenen Daten (received)
  • S: Sortierung nach gesendeten Daten (send)
  • Q: Programm schließen (Alternative zu Strg + C)

Die (kleine) Liste aller Optionen finden sich entweder in der manpage oder auf Deutsch im Ubuntuusers-Wiki.

Fazit

Nethogs ist ein kleines Werkzeug, das einfach nur macht, was es soll – nämlich den aktuellen Netzwerkverkehr auf die einzelnen Prozesse aufgliedern. Die bestehenden „Problemchen“ wie fehlende UDP-Unterstützung oder Sortiertung allein nach Datentraffic werden ggf. in einer nächsten Version ausgebügelt.

Mit dem Wechsel zur neuen Oberfläche Australis waren sie entfallen, die Knöpfe zum Öffnen der Seitenleiste. Mit der Maus gelang das nur noch umständlich über das Menü (Alt, Ansicht > Seitenleiste). Nun ist mit Firefox 30 wieder ein Knopf integriert worden und steht in der Anpassen-Auswahl zur Verfügung, mit dem man ohne Tastenkürzel schnell auf die Seitenleisten zugreifen kann.

Allerdings gibt es keine getrennten Knöpfe für die jeweiligen Funktionsleisten wie früher, sondern es handelt sich nur noch um einen einzigen Button, der im Grunde nur den Seitenleisten-Menüeintrag ein wenig zugänglicher macht. Wer mit einem Klick Lesezeichenleiste oder Chronik aufrufen will, muss sich weiterhin selbst etwas zurechtbasteln.

Problem: “DEFINER”

Jeder MySQL-Dump welcher mit dem Befehl “mysqldump” erstellt wird beinhalte die Einstellung zum “DEFINER”.

z.B.: DEFINER=`root`@`localhost` SQL SECURITY DEFINER

Dies bedeutet, dass man diesen SQL-Dump nicht einfach z.B. auf dem Ziel-Server nutzen kann, da die Applikation wahrscheinlich / hoffentlich keinen Root-Zugriff auf die Datenbank hat.

Lösung: via “grep”

Als schnelle Lösung für diese Problem entferne ich einfach den entsprechenden DEFINER-Eintrag.

mysqldump -u your_user --skip-comments --skip-opt --complete-insert --databases your_db | grep -v 'SQL SECURITY DEFINER' > ~/your_dump.sql

http://gist.suckup.de/tpl_default.php?pid=1#sec_fb936cf7878c32a5f0b0

Tipp im Tipp

Falls man mit Windows arbeiten muss, empfehle ich die Git-Bash (MinGW + GIT) zu installieren und das “mysql/bin” Verzeichnis im Windows PATH (System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen) einzutragen. So kann man den oben genannten Befehl (und vieles mehr) auch unter Windows nutzen!

 

Links & Quellen:

– http://dev.mysql.com/doc/refman/5.1/de/create-view.html
– http://www.sitepoint.com/mysql-views/
– http://www.mingw.org/
– http://msysgit.github.io/

Wer eine Rest-API testen möchte, der kann dies natürlich im Browser tun. Einfacher funktioniert das ganze mittels RESTClient. Dabei handelt es sich eine freie Anwendung um die REST-API aufzurufen und anschließend das Ergebnis auszuwerten.

RESTClient

RESTClient

Dabei hat man volle Kontrolle über die gesendeten Parameter, die HTTP Methode, den Header und einige andere Einstellungen. Nach einem ausgeführten Request können die Ergebnisse der Anfrage eingesehen werden. RESTClient ist unter der Apache Lizenz lizenziert. Neben der offiziellen Seite, gibt es den Download auf Foss Hub. Der Quelltext (sowie der Bugtracker) ist auf GitHub zu finden. Da RESTClient in Java entwickelt wurde ist es unter Linux, Mac OS X und Windows lauffähig.

Für was ist das gut?

Um den Netzwerktraffic unter Linux zu analysieren, gibt es zahlreiche Werkzeuge wie ethstatus, iptraf oder iftop. Allerdings zeigen die meisten Programme nur von und zu welcher IP der Datenverkehr durch die Leitung geschickt wird oder wie viel gerade fließt. Möchte man dagegen wissen, welcher Prozess den meisten Netzerwerkverkehr gerade im Moment verursacht, tappt man bei den genannten im Dunkeln. Das Licht schafft hier das kleine Kommandozeilenwerkzeug Nethogs.

Allerdings gibt es vorab erwähnt auch ein paar kleinere Feature-Lücken: So kann keine Sortierung nach Programmnamen stattfinden, Nethogs muss immer mit Root-Rechten ausgeführt werden, zeigt nur den aktuellen Netzwerkverkehr und lässt UDP unter den Tisch fallen (relevant zum Beispiel für BitTorrent).

Installation

Das Progamm findet sich eigentlich in jedem Repositorium einer Linux-Distribution, zum Beispiel Ubuntu oder Arch Linux. Notfalls kann man aber auch den Quellcode selbst kompilieren.

Verwendung

Grundsätzlich lässt sich Nethogs mit dem gleichnamigen Kommandozeilen-Befehl ausführen. Jedoch sind dazu Root-Rechte notwendig.

1
$ sudo nethogs

Standardmäßig lauscht Nethogs an eth0. Verwendet man allerdings WLAN übergibt man – für die erste WLAN-Schnittstelle – wlan0 als Parameter.

1
$ sudo nethogs wlan0

Sollte das immer noch nicht zu Erfolg führen, gibt der folgende Befehl alle lokalen Netzwerkschnittstellen aus.

1
$ ifconfig

Die gewünschte Schnittstelle dann Nethogs entsprechend als Parameter übergeben. Danach präsentiert sich Nethogs als ncurses-Oberfläche wie im Screenshot.

Aussehen von Nethogs: tabellenartig mit 6 Spalten. Eine Spalte für die
PID, der Nutzer der das Programm ausführt, der Programmname, die
Netzwerkschnittstelle sowie die Menge an gesendeten und empfangenen
Daten.
So tabellenartig sieht Nethogs aus.

Die einzelnen Spalten sind eigentlich selbsterklärend. Zudem kann man über Tastenkürzel Nethogs ein wenig anpassen; kurz die meiner Meinung nach wichtigsten Optionen:

  • M: Zwischen den Einheiten KB/s, KB, B oder MB umschalten
  • R: Sortierung nach empfangenen Daten (received)
  • S: Sortierung nach gesendeten Daten (send)
  • Q: Programm schließen (Alternative zu Strg + C)

Die (kleine) Liste aller Optionen finden sich entweder in der manpage oder auf Deutsch im Ubuntuusers-Wiki.

Fazit

Nethogs ist ein kleines Werkzeug, das einfach nur macht, was es soll – nämlich den aktuellen Netzwerkverkehr auf die einzelnen Prozesse aufgliedern. Die bestehenden „Problemchen“ wie fehlende UDP-Unterstützung oder Sortiertung allein nach Datentraffic werden ggf. in einer nächsten Version ausgebügelt.

Ohloh erinnert mich an ein modernes freshmeat, auch wenn das inzwischen freecode heißen mag. Es listet Softwareprojekte mit ihren Metadaten, baut aus ihrem Quellcode nette Statistiken und zieht Schlussfolgerungen über den Zustand des Projektes.

Das funktioniert nicht immer fehlerfrei, aber die Fehler sind verständlich. So denkt Ohloh, dass izulu ein neues Projekt sei, weil der Code auf Github eben erst vor drei Monaten eingecheckt wurde und vorher fast 5 Jahre in Archiven auf sourceforge herumlag, mit denen es natürlich nichts anfangen kann.

Bei Serendipity stoppte die Analyse auf einem Stand von vor mehreren Jahren, wahrscheinlich kam es mit dem abgeschalteten - aber nicht aus der Repoliste entfernten - berlios-svn nicht zurecht. Dem abgeholfen denkt es, dass s9y zu 30% aus XML-Dateien bestehen würden, weil die XML-Dateien in additional_plugins eben entsprechend groß sind. Und ausschließen kann man sie nicht alle, dafür sind sie zu viele (mehr als 1000 Zeichen verbietet das Disallow-Tool). Edit: Ich habe da nochmal drüber nachgedacht und jetzt einfach das Repo rausgeschmissen, sodass nur s9y selbst analysiert wird. Ermöglicht einen besseren Vergleich mit Wordpress.

Der Sprung um 1 Millionen LoC Ende 2011 ist wohl eine Fehlberechnung, weil seitdem git und svn parallel betrieben werden

Aber zumindest werden jetzt die Serendipity-Statistiken überhaupt wieder berechnet, und aus einem vermeintlich toten Projekt ist ein angeblich sehr aktives geworden, was inzwischen auch wirklich stimmt. Und ich glaube, den 2.0-Branch ignoriert er, das wird nach dem Merge nochmal ein hübscher Sprung, zumindest bei den Commits.

Die Projekte so präsentiert zu sehen ist hübsch, und sicher nicht unnütz, falls sich ab und an Nutzer tatsächlich damit ein Bild einer bestimmten Software machen, oder eher Entwickler Projekte in einem bestimmten Feld suchen.

Für mich spaßiger sind die Entwicklerstatistiken. Als Entwickler kann ich meine Commits claimen, und Ohloh baut dann für mich ein paar Graphen und Fakten. So sei ich am erfahrensten in PHP, was mit meinem Selbstbild kollidiert, aber inzwischen wahrscheinlich schlicht stimmt, auch wenn ein gewisser Teil meines PHPs s9y-spezifisch sein dürfte.

Dann noch ein paar Badges dazu und schon hat die Seite es geschafft, dass ich mein Profil dort ein bisschen ausgefüllt habe. Und nebenbei fehlende Projekte in das Register eingetragen habe, was den Wert der Seite erhöht - saubere Manipulation mithilfe der eigenen Eitelkeit, oder nennen es wir Interesse; gutes Handwerk.

Ich finde es gut, eine zusätzliche und moderne Softwarepräsentationsseite gefunden zu haben. Es ist nun sicher nicht so, dass ich die Seite täglich besuchen werde, aber ab und an mal vorbeischauen oder mich von dort auf die eigentliche Projektwebseite leiten zu lassen, das kann ich mir schon vorstellen. Und als Gegengewicht für Github erfüllt es auch eine sinnvolle Funktion, sodass dieses neben dem Hosten der Projekte selbst nicht zwingend auch Hauptanlaufpunkt für Statistiken der Projekte und Selbstrepräsentation der Entwickler sein muss.

Seit der automatischen Upgrade-Funktion von Piwik geht das Update auf eine neue Piwik-Version bekanntlich schnell und unkompliziert. Ich habe bereits die eine oder andere Version über die Funktion aktualisiert und seither noch nie ein Problem gehabt – doch einmal ist ja bekanntlich immer das erste Mal:

Fai­led to load HTML file: Please check your ser­ver con­fi­gu­ra­tion. You may want to whi­te­list “*.html” files from the “plugins” direc­tory. The HTTP sta­tus code is 404 for URL “plugins/ZenMode/angularjs/quick-access/quick-access.html“

Diese Meldung spuckt mir das Webinterface nach einem erfolgreichen Upgrade entgegen. Und sie hat nicht ganz unrecht – wenn ich die Datei im Browser direkt öffnen möchte, so erhalte ich eine Zugriffsverletzung…

Um die Meldung wegzubekommen (eine Einschränkung in der Funktionalität konnte ich bisweilen nicht feststellen), müssen die Berechtigungen auf 3 Ordner von 750 auf 755 geändert werden:

1. /plugins/ZenMode/
2. /plugins/ZenMode/angularjs/
3. /plugins/ZenMode/angularjs/quick-access/

Hierbei sollte auch nur die Berechtigung der Ordner und nicht der Dateien angepasst werden, da dass Erlauben zum Ausführen für Alle mir bereits etwas Bauchschmerzen bereitet.

9. Juni 2014

Historisches

OpenOffice.org war eine quelloffene Bürosoftware, welche im Jahr 2000 aus dem Quellcode des kommerziellen Office-Programms StarOffice hervorgegangen ist. Teil von OpenOffice.org waren die Anwendungen Writer (Textverarbeitung), Calc (Tabellenkalkulation), Impress (Präsentationen), Draw (Zeichnen), Base (Datenbanken) sowie Math (Formel-Editor).

Im September 2010 haben zahlreiche Entwickler der Office-Suite OpenOffice.org dem Projekt – wegen Meinungsverschiedenheiten mit der Firma Oracle – den Rücken gekehrt und das LibreOffice-Projekt gegründet, welches von der Stiftung The Document Foundation getragen wird. Grundlage für LibreOffice war der Quellcode von OpenOffice.org.

Daraufhin hat sich Oracle im Juni 2011 komplett aus dem OpenOffice.org-Projekt zurückgezogen und die Entwicklung sowie die Markenrechte von OpenOffice.org in die Hände der Apache Software Foundation gelegt, welche das Office-Paket von OpenOffice.org in Apache OpenOffice umbenannte.

Co-Existenz zwischen Apache OpenOffice und LibreOffice

Seitdem (Stand: Juni 2014) herrscht eine Co-Existenz zwischen den beiden kostenlosen Office-Programmen, was vor allem bei EDV-Laien nach wie vor zu Verwirrungen führt.

Nachdem OpenOffice.org jahrelang zur Standardinstallation der meisten Linux-Distributionen gehörte, wird heutzutage LibreOffice vorinstalliert. Bei den meisten Distributionen ist OpenOffice gar nicht mehr in den offiziellen Repositories vorhanden und somit im Linux-Umfeld fast schon etwas von der Bildfläche verschwunden.

Apache OpenOffice LogoLibreOffice Logo

 

Apache OpenOffice: Totgesagte leben länger

Obwohl die Entwicklung bei LibreOffice (kurz LibO) – aufgrund der vielen Entwickler – sehr zügig vorangeht, sollte man Apache OpenOffice (kurz AOO) keineswegs abschreiben. Erst kürzlich wurde wieder eine neue, verbesserte OpenOffice-Version veröffentlicht.

Ausserdem erfreut sich OpenOffice unter Windows-Anwendern immer noch grosser Beliebtheit, da die Marke OpenOffice traditionell für eine kostenlose aber ebenbürtige MS-Office-Alternative steht. Des Weiteren dürfen die Entwickler der Apache Software Foundation bei der Entwicklung von Apache OpenOffice auf die Unterstützung des IT-Giganten IBM zählen.

IBM hat in Version 4.0 von OpenOffice beispielsweise eine Seitenleiste integriert, mit welcher man Zugriff auf die wichtigsten Funktionen der Textverarbeitung, der Tabellenkalkulation sowie des Zeichenprogramms erhält.

Zum Entwicklerteam von LibreOffice gehören nicht nur ehemalige OpenOffice.org-Entwickler, sondern auch zahlreiche bekannte Unternehmen aus dem Open-Source-Umfeld wie z.B. Red Hat, Univention, SUSE und Google. Auch Canonical, die Firma hinter dem beliebten Linux-Betriebssystem Ubuntu, zählt zu den Unterstützern von LibreOffice.

Kompatibilität zwischen Apache OpenOffice, LibreOffice und MS-Office

Wie schon OpenOffice.org verwenden auch Apache OpenOffice und LibreOffice das OpenDocument-Format (kurz: ODF) als Standard-Dateiformat. Dieses entspricht der internationalen ISO-Norm ISO/IEC 26300.

Mit diesem Dokumenten-Standard bleibt gewährleistet, dass ODF-Dateien mit beiden freien Officepaketen erstellt, gelesen und verändert werden können, egal ob diese ursprünglich mit Apache OpenOffice oder mit LibreOffice erstellt wurden.

Im Hinblick auf die verbreiteten Microsoft-Formate (doc, docx, xls, xlsx, ppt, pptx, usw.) sind beide Open-Source-Projekte bestrebt, eine gute Kompatibilität zu gewährleisten. Mit jedem grösseren Update wird die Darstellung dieser Formate wieder ein Stück verbessert.

Zu erwähnen ist, dass es für die Entwickler von Apache und The Document Foundation schwierig ist, eine 100 %ige Kompatibilität mit MS-Formaten zu gewährleisten, da Microsoft die Spezifikationen seiner eigenen Formate absichtlich nicht vollständig der Öffentlichkeit freigibt, um seine Monopolstellung im Software-Bereich zu bewahren. Diese traurige Tatsache hindert viele Unternehmen daran, auf freie Software umzusteigen.

Aussehen

Die Optik von Apache OpenOffice und LibreOffice ähnelt visuell sehr der 2003er-Version von MS-Office. Aber auch Umsteiger anderer MS-Office-Versionen dürften sich mit ein bisschen Lernbereitschaft mit den freien MS-Office-Alternativen rasch zurechtfinden.

Screenshots der Linux-Version von Apache OpenOffice 4.1 (zum Vergrössern anklicken)

Apache OpenOffice Start Screen Apache OpenOffice Writer Apache OpenOffice Calc Apache OpenOffice Impress Apache OpenOffice Draw Apache OpenOffice Base Apache OpenOffice Math

Screenshots der Linux-Version von LibreOffice 4.1 (zum Vergrössern anklicken)

LibreOffice Start Screen LibreOffice Writer LibreOffice Calc LibreOffice Impress LibreOffice Draw LibreOffice Base LibreOffice Math

Die Namen der einzelnen Programmmodule sind bei Apache OpenOffice und LibreOffice dieselben geblieben; doch unterscheiden sich die Programmsymbole der beiden Office-Suiten weitgehend voneinander.

Vergleich: Apache OpenOffice und LibreOffice Programm-Symbole

Auffällig ist, dass Apache für OpenOffice dieselben Programmicons verwendet, wie das „Vorgänger“-Projekt OpenOffice.org. The Document Foundation hat die Icons von LibreOffice stattdessen ganz dem Logo der eigenen Stiftung angepasst.

Kosten / Lizenz

Für den normalen Endanwender dürfte die Lizenz des Quellcodes der beiden Office-Suiten keine grosse Rolle spielen. Schliesslich ist die Benutzung von Apache OpenOffice und LibreOffice für die meisten Menschen eine Kostenfrage. Beide Office-Pakete sind und bleiben der Öffentlichkeit weiterhin sowohl in Binärform für GNU/Linux, Windows und Mac OS X als auch im Quelltext kostenlos zugänglich.

Anders sieht es bei Software-Entwicklern aus. Apache OpenOffice und LibreOffice stehen beide unter zwei verschiedenen freien Software-Lizenzen. Während Apache das OpenOffice-Projekt unter die hauseigene Apache-Lizenz v2.0 stellte, hat The Document Foundation das LibreOffice-Projekt dreifachlizensiert. LibreOffice steht nicht nur unter der General Public License v3+ (GPL), sondern auch wahlweise unter der Lesser General Public License v3+ (LGPL) und der Mozilla Public License v2.0.

Die Apache Lizenz v2.0 ist mit der (Lesser) General Public License v3 kompatibel, andersrum aber nicht. Als Folge daraus können Änderungen am Quellcode von Apache OpenOffice vom LibreOffice-Team in dessen Sourcecode übernommen werden, umgekehrt jedoch nicht.

Dies ist ein entscheidender Nachteil von Apache OpenOffice in Sachen Lizenzierung. LibreOffice kann sich sozusagen „legal“ am Code von OpenOffice bedienen, da dies die liberale Apache Lizenz zulässt.

Die von der Firma IBM in Apache OpenOffice 4.0 integrierte – oben erwähnte – Seitenleiste konnte von den LibreOffice-Entwicklern aufgrund dessen in LibreOffice 4.2 eingefügt werden. Die Seitenleiste ist in LibreOffice übrigens zwar standardmässig deaktiviert, kann aber im Menüpunkt Ansicht -> Seitenleiste dauerhaft aktiviert werden.

Apache OpenOffice Writer

Apache OpenOffice Writer 4.1 unter Ubuntu Linux mit Seitenleiste (siehe rechts vom Bild)


Fazit

Für Otto-Normal-Benutzer spielt es grundsätzlich keine Rolle, ob man sich für Apache OpenOffice oder LibreOffice entscheidet. Beide MS-Office-Alternativen sind kostenlos für alle verbreiteten Betriebssysteme herunterladbar. Bei der Entwicklung von Apache OpenOffice legen die Entwickler hohen Wert auf Stabilität und Zuverlässigkeit. Bei LibreOffice liegt der Fokus bei der Entwicklung vor allem auf der Integration neuer Funktionen und Verbesserungen. Dies ist zumindest mein persönlicher Eindruck.

Tipp für ältere, leistungsschwache Computer

Sowohl Apache OpenOffice als auch LibreOffice eignen sich problemlos auch für ältere Computer – sofern genügend CPU-Leistung und Arbeitsspeicher vorhanden ist. Wer jedoch zuhause einen – aus heutiger Sicht – leistungsschwachen PC stehen hat und für diesen ein leichtgewichtiges Schreibprogramm sowie eine ressourcensparende Tabellenkalkulation sucht, findet vielleicht auch in Abiword und Gnumeric eine Alternative. Beide sind ebenfalls Open-Source und kostenlos.

Puzzle sind nicht nur gut für die Wand sondern auch im Spielbereich eine tolle Sache.
Bei dem indie Spiel Spirits geht es wie beim puzzeln darum kleine Rätsel mithilfe von verschiedenen Objekten zu lösen.
Die Deutschen Entwickler von Spaces of Play verfolgen dabei ein Interessantes Spielprinzip.

Quelle - Bildschirmfoto von Spirits
Quelle – Bildschirmfoto von Spirits

Inhalt

Wem beim puzzeln Freude aufkommt wird sich bei Spirits sicher wohl fühlen da hier jedes Level ein kleines Puzzle darstellt.
In dem Spiel muss der Spieler die Elemente des Herbstes nutzen um die kleinen Geister zum Ziel zu befördern.

Der Wind spielt dabei eine wichtige Rolle da dieser zusammen mit anderen Aktionen zum überwinden von Hindernissen benutzt wird.
Um eine Kante zu überwinden können Brücken aus Laub gebaut werden jedoch wird bei jeder Aktion ein Geist nicht zum Ziel kommen.
Weiter kann der Spieler Aktionen wie dass erschaffen von Windwolken, graben von Tunneln oder dass anhalten des Windes an bestimmen stellen nutzen.

In höheren Level müssen neben der bestimmten Anzahl von Geistern auch andere Aufgaben wie dass einsammeln von Pflanzen erledigt werden.

Grafik

Die grafische Gestaltung von Spirits ist rundum gelungen, den Spieler erwartet eine Welt voller kräftiger Farben die an den Herbst erinnern.
Bei den Animationen wurde sauber gearbeitet sodass hier flüssige Bewegungen dargestellt werden.

Quelle - Bildschirmfoto von Spirits
Quelle – Bildschirmfoto von Spirits

Infos und Details

Preislich liegt Spirits mit 7.49 Euro in einem guten Bereich der auch einen Spontan kauf nicht ausschließt.
Um dass Spiel zu Spielen kann der Spieler fast jedes Gerät nutzen da Versionen für die Plattformen Linux, Mac, iOS, Android und Windows verfügbar sind.
Erhältlich ist Spirits auch in dem Humble Store inklusive DRM-Freier Version.

Über die Option Online Highscore in den Einstellungen kann der Spieler sich mit anderen vergleichen und seinen Platz auf der Liste im Menü einsehen.
Der Soundtrack ist angenehm und nervt den Spieler beim lösen von den Aufgaben nicht.

Die Systemanforderungen sind recht niedrig gehalten womit dass Spiel auch auf Laptops problemlos laufen sollte.

Linux Systemanforderungen

-Betriebssystem: Linux Ubuntu 12.04
-Arbeitsspeicher: 2 GB RAM
-Grafik: 256 MB Video RAM
-Festplattenspeicher: 200 MB frei

Quelle - Bildschirmfoto von Spirits
Quelle – Bildschirmfoto von Spirits

Bewertung

Kategorie Wertung
Grafik 9/10
Gestaltung 8/10
Inhalt 7/10
Gesamt 24/30

Fazit

Mir hat dass Spiel sehr gefallen und für zwischendurch ist es wirklich gut geeignet.
Manchmal versinkt man in dem Spiel und bekommt die Zeit nicht mehr mit sodass die ein oder andere Stunde schnell vergangen ist.
Ich kann dass Spiel gut Gewissens weiterempfehlen, besonders den Puzzle Liebhabern.

8. Juni 2014

Kleine Änderung für Nutzer der Aurora-Versionen von Firefox: Diese werden ab Version 32 nicht mehr täglich, sondern nur noch wöchentlich zum Update aufgefordert.

Es ist nur eine kleine Änderung der Standard-Konfiguration (app.update.promptWaitTime in about:config) der Aurora-Version von Firefox: Diese Einstellung legt fest, wie viele Sekunden nach der Anzeige, dass ein Update verfügbar ist, das Fenster erscheinen soll, welches zum Update und Neustart des Browsers auffordert.

Bislang lag die Standardeinstellung bei 86400 Sekunden und damit 24 Stunden, diese wurde nun für Aurora auf 604800 Sekunden und damit sieben Tage geändert. Aurora-Versionen sind die Firefox-Versionen, die zwischen den Nightly- und Betaversionen liegen und diejenigen, welche Mozilla Webentwicklern empfiehlt. Diese sollen durch diese Änderung, wenn sie ihren Browser länger durchgehend offen haben, nicht so häufig durch die Update-Aufforderung gestört werden. Daran, dass es tägliche Updates für die Aurora-Versionen gibt, ändert sich nichts.

Open Source sei Danke, gibt es seit 2012 einen Fork von Cube 2: Sauerbraten welcher auf den Namen Tesseract hört und dem Genre der Shooter zuordnen lässt. Ziel der Abspaltung ist es dabei modernere Rendertechniken wie dynamisches Licht und andere Dinge zu nutzen. Das wirkt sich sehr positiv auf das Aussehen der Level aus. Das Spiel als solches ist sehr schnell, so das man durchaus ein paar brauchbare Reflexe mitbringen sollte. Eine weitere Besonderheit von Tesseract ist der integrierte Editormodus, mit welchem man in der First Person Ansicht alleine oder kooperativ die Level bauen kann.

Eine Tesseract-Map

Eine Tesseract-Map

Bezogen werden kann Tesseract auf der offiziellen Webseite. Das Spiel ist für Mac OS X, Linux und Windows verfügbar. Der Quelltext ist in einer Subversion-Instanz zu finden. Lizenziert ist das ganze dabei unter der zlib-Lizenz.

Dateien können unter unixoide Betriebssysteme mit „find“ nach vielen Kriterien gesucht werden.

Shell :: Manual find

Shell :: Manual find


Suche nach Alter, Name, Benutzer, Typ und Größe sind standardmäßig vorhanden, aber wie werden Dateien in einem bestimmten Zeitraum gefunden?

Kleiner Trick, um die Datei Suche zeitlich einzugrenzen kurz notiert …

HinweisZeitliche Suchkriterien werden relativ zur aktuellen Zeit angegeben. Im Vergleich zu einer bestehende Datei können neuere Dateien mit der Option „-newerXY“ gesucht werden.

Angenommen ein Server hatte ein Zeitfenster zur Wartung am 4.2 von 2 bis 4 Uhr und wir möchten Wissen, welche Änderungen im Dateisystem vorgenommenen wurden.

Die geänderten Dateien in diesem Zeitraum können mit zwei Hilfsdateien durch find aufgelistet werden. Eine Datei mit dem älterem und eine mit neuerem Zeitstempel können mit „touch“ erstellt werden.

$ touch -t 1402040400 older.timestamp
$ touch -t 1402040200 newer.timestamp

Der Filter kann mit den beiden Dateien auf neuer „-newer“ und und älter „\! -newer“ (nicht neuer) angegeben werden.

Damit das Ergebnis auch verarbeitet werden kann „-exec“, wird die Datei der aktuelleren Zeitgrenze mit „\! -samefile older.timestamp“ herausgenommen.

$ find . -type f -newer newer.timestamp \! -newer older.timestamp \! -samefile older.timestamp

Oder gibt es noch bessere Möglichkeiten in der shell Dateien zeitlich einzugrenzen?

Gist ist ein schneller Weg, um Code-Beispiele / Konfigurationen / etc.  mit anderen zu teilen oder für sich selber aufzubewahren. Jedes “gist” wird dabei als eigenes git-Repository angelegt, so werden diese automatisch versioniert und andere können davon einen Fork erstellen.

Leider gibt es keine Tags für die erstellten “gists”, so dass man sich ein System überlegen muss, wie man die entsprechenden Code-Beispiele wiederfindet z.B.:

– entsprechend aussagekräftige Dateinamen verwenden
– den Type der Datei immer korrekt angeben
– Tags in der Beschreibung hinzufügen #Tag1, #Tag2
– Beschreibung kurz halten

1.) meine “gists”

gist.suckup.de: Diese Webseite habe ich erstellt, um einen schnellen Überblick über meine gists zu erhalten, außerdem habe ich einige Code-Playground und andere Infos hinzugefügt.

2.) Gists organisieren und sammeln

www.gistboxapp.com: Auf dieser Webseite kann man den gists richtige Tags zuordnen und diese somit besser organisieren. Jedoch kann man diese Tags nicht via github / api abrufen, so dass diese nicht in z.B. der IDE angezeigt werden. Außerdem bietet die Webseite eine Chome-Addon, mit welchem man sehr einfach Code-Beispiele von anderen Webseiten als “gist” abspeichern kann.

 

2.) IDE-Integration

Alle großen IDEs und Texteditoren haben git / gists bereits integriert oder bieten zumindest Plugins, um z.B. selektieren Quelltext direkt als gist abzuspeichern oder gists im Quelltext einzufügen.

– PhpStorm / IntelliJ  (bereits integriert)
– Eclpise (Plugin: “EGit”)
– Sublime Text (Plugin: “gist”)
– vim  (Plugin: “gist-vim”)

Beispiel: Sublime Text + Gist

sample

 

Beispiel: PhpStorm + Gist

gist_phpstorm

Ich habe schon vor einiger Zeit über die “.bashrc” berichtet und hier die Installation meiner dotfiles [~/.*] vorgestellt.

Heute möchte ich an einigen Bildern zeigen wie die Bash aussieht nachdem man die bereits erwähnten dotfiles installiert und wie man diese nach seinen Wünschen anpasst.

bash_prompt

1.) der Code

.bashrc: Dies ist die Konfigurationsdatei der Bash, diese wird bei jedem Aufruf einer interaktiven Shell ausgeführt. In meiner .bashrc stehen zunächst einmal ein paar Informationen, wovon ich hier nur die entsprechenden Links nennen möchte, welche man sich einmal anschauen sollte:

http://www.kfirlavi.com/blog/2012/11/14/defensive-bash-programming/
www.commandlinefu.com/commands/browse/sort-by-votes
https://twitter.com/climagic

.bash_profile: Diese Datei hat die selbe Aufgabe wie die .bashrc, wird jedoch “eigentlich” nur für Login-Shells aufgerufen. In diesem Fall wird die Datei jedoch auch für interaktive Shells verwende, da wir diese in der .bashrc inkludiert haben.

for file in ~/.{path,colors,icons,exports,aliases,bash_complete,functions,extra,bash_prompt}; 
do [ -r "$file" ] && [ -f "$file" ] && source"$file" 
done 
unset file

In dieser Datei werden wiederum andere Shell-Konfigurationen geladen (siehe vorheriges Code-Beispiel), welche auch von anderen Shells (z.B.: der zsh) genutzt werden können.

Desweiteren werden einige Einstellungen in einer zweiten for-Schleife ausgeführt. Andere Einstellungen sind näher beschrieben bzw. nur für nicht root-User geeignet und werden daher einzeln ausgeführt.

 .bash_prompt: Wie wir im vorherigem Code-Ausschnitt sehen konnten, wird diese Datei zum Schluss geladen, so dass wir zuvor definierte Funktionen und Variablen verwenden können.

# Local or SSH session?
local remote=""
[ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ] && remote=1

Wir prüfen, ob es sich hier um ein lokales Terminal oder um eine SSH Verbindung handelt, so dass wir den Hostnamen nur anzeigen, wenn dieser auch benötigt wird.

# set the user-color
local user_color=$COLOR_LIGHT_GREEN           # user's color
[ $UID -eq "0" ] && user_color=$COLOR_RED     # root's color

Root-User bekommen in der Prompt einen Roten-Usernamen angezeigt.

PS: die User-ID (UID) ist in der passwd zu finden: “cat /etc/passwd”

# set the user
local user="\u"

Die Zeichenkette “\u” wird beim Aufruf der Bash-Prompt in den entsprechenden Usernamen umgewandelt.

PS: hier gibt es eine Übersicht über weiter Zeichenketten, welche von der Bash-Prompt verarbeitet werden können z.B. die Uhrzeit

# set the hostname inside SSH session
local host=""
[ -n "$remote" ] && host="\[$COLOR_LIGHT_GREEN\]${ICON_FOR_AT}\h"

Wie bereits erwähnt zeigen wir den Hostnamen (“\h”) nur an, wenn es sich um eine Remote-Verbindung handelt.

if [[ -n $remote ]] && [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
  export TERM='gnome-256color'
elif infocmp xterm-256color >/dev/null 2>&1; then
  export TERM='xterm-256color'
fi

256 Farben in der lokalen Shell verwenden.

# INFO:   Text (commands) inside \[...\] does not impact line length calculation which fixes stange bug when looking through the history
#         $? is a status of last command, should be processed every time prompt prints

Da der Bash-Prompt bestemmte Zeichen nicht mag und wir davon einige in der bereits inkludierten “.colors“-Datei verwendet haben, müssen wir diese Variablen nun hier escapen.

# Format prompt
export PS1="\`if [ \$? -eq 0 ]; then echo -e \[\$COLOR_GREEN\]\${ICON_FOR_TRUE}; else echo -e \[\$COLOR_RED\]\${ICON_FOR_FALSE}; fi\` \[$user_color\]${user}${host}\[$user_color\]:\[$COLOR_LIGHT_BLUE\]\w\[$COLOR_LIGHT_RED\]${ICON_FOR_ARROW_RIGHT}\$(__git_branch)\$(__svn_branch)\$(__git_dirty)\[$COLOR_NO_COLOUR\] "

Der Prompt wird in der Variable PS1 (“echo $PS1″) gespeichert und nach jedem Befehl auf der Kommandozeile neu aufgerufen / ausgeführt, daher rufen wir in der Variable wiederum Funktionen auf, so dass diese Funktionen ebenfalls erneut ausgeführt werden.

PS: “$?” muss als erstes ausgeführt werden, da dieser Befehl den Rückgabewert des letzten Kommandos zurückliefert

2.) Beispiele

bash_prompt_false

- Root-User wird rot gekennzeichnet

- “” anzeigen, wenn der letzte Befehl nicht korrekte funktioniert hat

 

bash_prompt_remote

- Anzeigen des Hostnamens nur bei Remoteverbindungen

- Repository-Branch (git, svn) anzeigen

-  Repository-Status anzeigen (! anfügen, wenn etwas nicht eingecheckt ist)

 

Links & Quellen:

http://wiki.ubuntuusers.de/Bash/Prompt
https://wiki.archlinux.de/title/Bash-Prompt_anpassen
http://ezprompt.net/