Skip to content

Mein Arbeitsplatz ...

linux

Systemadministrator (aktueller "Jobtitel Senior System Engineer Linux/Unix") bin ich schon relativ lange und so lange ich diesen Job mache, so lange schraube ich und verbessere mein Arbeitssetup.

Das berufliche "Virtual Desktop"-Betriebssystem ist leider Windows, aktuell in der Version 10, via Thin Client, wobei ich bis auf Mailclient und Webbrowser (via SSL Interception Proxy) nur Zugriff auf die Linux- und Solaris-Infrastruktur benötige.

Dafür habe ich sehr vieles ausprobiert. Wir haben einen Remote Desktop mit NoMachine, den ich lange genutzt habe - vor allem, da ich ihn auch über beide Monitore strecken kann - aber so richtig warm geworden bin ich damit nicht. In einem anderen Kontext nutzen wir xrdp und auch X2Go habe ich getestet. Auf der Gegenseite läuft jeweils ein Red Hat Enterprise Linux 7 mit KDE 4 als Desktop (privat bin ich auf Fedora 29 mit KDE Plasma).

Nach allem Hin und Her bin ich mittlerweile bei PuTTY und - falls ich wirklich einmal (sehr selten) Grafik brauche - XMing, das reicht für mich völlig aus.

In PuTTY gibt es vier Settings, die ich jedem empfehlen möchte, der ernsthaft damit arbeitet.

  1. Unter Window / Behaviour habe ich "Full screen und Alt-Enter" gesetzt, damit lässt sich PuTTY in einem rahmenlosen Vollbild-Fenster betreiben.
  2. Unter Window / Selection ist die "Action of mouse buttons" auf "xterm (Right extends, Middle pastes)" gesetzt. Ihr wisst schon ... alter Sack ... Schwierigkeiten umzugewöhnen ... besser es funktioniert so wie auf jedem gewohnten Linux Desktop.
  3. Ebenfalls unter Windows / Selection gibt es den Punkt "Paste to clipboard in RTF as well as plain text" - gerade in Verbindung mit Outlook als Zwangsclient hilft das sehr, formatierte Dinge (inklusive Farben) aus der Shell zu pasten.
  4. Unter Connection / SSH / X11 muss natürlich "Enable X11 forwarding" eingeschaltet sein, sonst wird das nichts mit XMing.

Apropos XMing, das wird über einen Shortcut mit folgenden Parametern gestartet: Xming.exe :0 -clipboard -multiwindow -xkblayout ch -xkbvariant de

Was das ganze Setup aber zu meiner Administrationslösung macht, ist tmux. Meine Konfiguration findet Ihr am Ende das Artikels. Vielleicht erläutere ich sie einmal in einem weiteren Blogposting.

Bis vor kurzem habe ich immer ClusterSSH benutzt, wenn ich auf mehreren Systemen gleiche Befehle ausführen musste. Das hat auch mit XMing super funktioniert, bringt aber eine Inflation an Fenstern mit sich.

Daher bin ich richtig froh, dass ich tmux-xpanes entdeckt habe. Das Tools ist mit einer Fullscreen Terminal-Session via tmux einfach unschlagbar.

Meine zwei Monitore sind jetzt wie folgt aufgeteilt. Der linke Monitor trägt den ganzen Windows-Kram und der rechte eine PuTTY-Session im Fullscreen mit tmux. Das ist für mich perfekt.

# .tmux.conf
# Dirk Deimeke

set -s escape-time 1
set -g base-index 1
setw -g pane-base-index 1

bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind S set-window-option synchronize-panes

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

bind -r H resize-pane -L
bind -r J resize-pane -D
bind -r K resize-pane -U
bind -r L resize-pane -R

set -g default-terminal "xterm-256color"

set -g status-fg black

setw -g window-status-fg black
setw -g window-status-bg default
setw -g window-status-attr dim

setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

set -g pane-border-fg green
set -g pane-border-bg black

set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

set -g message-fg white
set -g message-bg black
set -g message-attr bright

#### COLOUR (Solarized 256)

# default statusbar colors
set-option -g status-bg colour235 #base02
set-option -g status-fg colour136 #yellow
set-option -g status-attr default

# default window title colors
set-window-option -g window-status-fg colour244 #base0
set-window-option -g window-status-bg default
#set-window-option -g window-status-attr dim

# active window title colors
set-window-option -g window-status-current-fg colour166 #orange
set-window-option -g window-status-current-bg default
#set-window-option -g window-status-current-attr bright

# pane border
set-option -g pane-border-fg colour235 #base02
set-option -g pane-active-border-fg colour240 #base01

# message text
set-option -g message-bg colour235 #base02
set-option -g message-fg colour166 #orange

# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange

# clock
set-window-option -g clock-mode-colour colour64 #green
 

Vereine, die FLOSS-Dienste hosten ...

Weil ich in der letzten Zeit häufiger mit Menschen darüber diskutiert habe, kommt hier eine kurze Liste von Organisationen, die Dienste auf Basis von FLOSS (Free/Libre Open Source Software) anbieten. Anbieter ohne Impressum habe ich bewusst nicht aufgeführt.

Einer der grössten Vereine ist Framasoft in Frankreich, sie bieten unglaublich viele Dienste an.

Da wollte ich gar nicht hin ...

Jetzt bin ich mit Gib XMPP eine Chance ... genau an dem Punkt, an dem ich nicht sein wollte.

Conversations als Android-Client ist grossartig, aber jede Bemühung, mehrere Devices auf die gleichen verschlüsselten und unverschlüsselten Chats zugreifen zu lassen, schlägt fehl.

"Archiving" ist selbstverständlich eingeschaltet.

Unter iOS habe ich ChatSecure und den Testflight von Monal versucht, neben dem, dass die Nachrichten nicht angezeigt werden, funktioniert auch die Synchronisierung nicht gut. Ich bekomme Benachrichtigungen zum Teil Stunden nachdem ich sie auf dem Android-Handy hatte.

Unter Linux habe ich Kopete und Gajim versucht, auch das zeigt mir nicht alle Nachrichten an.

Ohne die Möglichkeit, auf die Chatverläufe von verschiedenen Devices zuzugreifen, kann ich XMPP nicht brauchen.

Für mich haben Matrix (via Riot), RocketChat und Mattermost bis jetzt am Besten von den FLOSS-Lösungen funktioniert.

Bin über Feedback oder Hinweise, was ich anders oder besser machen kann, sehr dankbar.

Datenbankbackup mit MyDumper unter CentOS 7 ...

centos

Zum Backup meiner Datenbanken benutze ich schon seit Jahren MyDumper und das MyLoader-Tool. Der grosse Vorteil von MyDumper neben der Geschwindigkeit durch Parallelisierung ist, dass alle Datenbanktabellen in einzelnen Dateien vorliegen und so leicht modifiziert werden könnten.

Höhere Geschwindigkeit bedeutet auch, dass man öfter Backups machen kann (bei mir alle vier Stunden).

MyDumper muss selber übersetzt werden, wenn es nicht in der Distribution dabei ist. Den Anfang bildet dass Holen des Quelltextes:

$ git clone https://github.com/maxbube/mydumper.git mydumper.git

Danach setzen wir die Variablen für das Übersetzen des Quelltextes.

$ export CC=/home/dirk/workspace/sclgcc.bash
$ export CXX=/home/dirk/workspace/sclc++.bash
$ export MAKEFLAGS="-j $(lscpu | awk '/^CPU\(s\)/ {print $2}')"

Die ersten beiden Variablen habe ich im gestrigen Artikel erwähnt.

Die MAKEFLAGS sorgen dafür, dass make mit mehreren Threads arbeitet. Ich nehme dafür die Anzahl der CPUs, die mir das System meldet.

$ yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel

Nachdem wir neben dem C++ Compiler, Make und CMake die Vorbedingungen installiert haben, kann es auch schon losgehen.

$ cd /home/dirk/workspace/mydumper.git
$ git clean -dfx
$ cmake . -DMYSQL_LIBRARIES_mariadb:FILEPATH=/usr/lib64/libmariadbclient.a -DWITH_SSL=OFF -DBUILD_DOCS=off
$ make
$ sudo make install

Das "git clean" räumt unter anderem die Reste von alten Übersetzungsversuchen auf. Guckt Euch bitte die Parameter gut an, bevor Ihr das in Repos macht, in denen Ihr Schreibrechte besitzt.

Da auf meinen Servern die aktuelle stabile Version von MariaDB arbeitet und ich ebenfalls den MariaDB-Client installiert habe, muss cmake das auch mitteilen.

Der Backup-User benätigt in der Datenbank "nur" Select-, Reload und Lock Tables Berechtigungen.
CREATE USER 'b2'@'localhost' IDENTIFIED VIA mysql_native_password USING 'kryptisches Passwort';
GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'backup'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Nachdem jetzt alles fertig ist, kann das folgende Backupskript seinen Dienst tun.

#!/bin/bash
# db-backup.bash
set -o errexit

BACKUPDB_DIR="/srv/bak/dumps"
DB_USERNAME="backup"
DB_PASSWORD="kryptisches Passwort"
THREADS=$(lscpu | awk '/^CPU\(s\)/ {print $2}')

cd ${BACKUPDB_DIR}

/usr/local/bin/mydumper --user ${DB_USERNAME} --password ${DB_PASSWORD} --threads ${THREADS}

find ${BACKUPDB_DIR} -type d -name 'export*' -mtime +1 -exec xargs rm -r '{}' \+

WICHTIG: Am Ende des Skripts werden alle Backups gelöscht, die älter sind als ein Tag.

Aktueller C-Compiler auf CentOS 7 ...

centos

Spannend, ich hätte schwören können, dass ich das schon einmal im Blog hatte, kann einen entsprechenden Artikel aber leider nicht finden.

Ein Weg, einen aktuellen C-Compiler auf CentOS zu installieren sind die offiziell unterstützten SoftwareCollections, für unseren Fall insbesondere das Developer Toolset 7. Die achte Version gibt es schon für Red Hat Enterprise Linux 7, wird also in den nächsten Wochen auch in CentOS 7 verfügbar sein.

Zuerst werden die Software Collections aktiviert und aktualisiert

$ sudo yum install centos-release-scl
$ sudo yum update

Installation des entsprechenden Pakets mit allen Abhängigkeiten

$ sudo yum install devtoolset-7-gcc-c++
Welche Software Collections installiert sind, bekommt man übrigens mit dem Kommando scl --list heraus.

Eine Shell mit aktivierter Software Collection starten

$ gcc --version | head -1
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)

$ scl --list
devtoolset-7

$ scl enable devtoolset-7 bash

$ gcc --version | head -1
gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1)

Neuen Compiler per Default aktivieren

Da man nicht jedes Mal eine neue Shell nutzen möchte, hilft der folgende Weg, das zu verwirklichen.

Wrapper Skripte für GCC und C++

#!/bin/bash
# sclgcc.bash

COMMAND="gcc $@"
scl enable devtoolset-7 "$COMMAND"
#!/bin/bash
# sclc++.bash
COMMAND="c++ $@"
scl enable devtoolset-7 "$COMMAND"

Setzen der Environment-Variablen, die cmake und make benutzen

$ export CC=/home/dirk/bin/sclgcc.bash
$ export CXX=/home/dirk/bin/sclc++.bash

Podcast-Hosting-Software gesucht ...

podcast

Vielleicht könnt Ihr mir helfen.

Momentan bin ich auf der Suche nach einer Podcast-Hosting-Software. Sie sollte folgende Eigenschaften haben:

  • Kein Wordpress, ich habe wirklich keine Ahnung von Wordpress und keine Zeit mich so einzuarbeiten, dass ich es sicher hosten kann und die Plugins zur Verfügung habe, die es meiner Ansicht nach für ein Blog oder einen Podcast braucht.
  • Gerne einen statischen Bloggenerator (am liebsten in Bash, Perl, PHP oder Python).
  • Kommentare sind Pflicht, meinetwegen auch durch eine selbst gehostete Kommentarfunktion.
  • Serverseitig kein Ruby, generell wäre mir eine der Skriptsprachen, in denen ich mich bewegen kann (siehe oben), lieb, aber das ist nicht zwingend.
  • Schön, aber nicht verpflichtend wäre der Podlove-Player.

DeimHart haben wir mit "meiner Blogengine" Serendipity betrieben. Leider ist der Podcast-Support immer noch sehr rudimentär, was der kleinen Zahl an Entwicklern geschuldet ist.

Gutes Markdown schreiben ...

Für einfache Texte nutze ich Markdown als Auszeichnungssprache. Das, was ich brauche, lässt sich dmit sehr gut umsetzen. Wenn es mehr sein müsste, würde ich vermutlich AsciiDoc oder reStructuredText verwenden.

Eigentlich möchte ich Markdown auch im Blog benutzen, aber über dreitausend alte Artikel möchte ich nicht gerne konvertieren.

Markdown hat sich an vielen Stellen als Standard für einfache Texte etabliert, daher lohnt sich die Beschäftigung damit. Die Beschreibung des Standard ist bei Daring Fireball zuf finden. Es gibt auch eine Seite über GitHub Flavored Markdown. Ein einfaches Markdown-Cheatsheet hilft beim Einstieg.

Heute habe ich mit markdownlint für mich vernünftig klingende Regeln für gute Markdown-Texte gefunden.

GPG-Keyserver ...

Bei mir häufen sich die Fälle von Usern, die das Problem haben, dass GPG-Keys, die auf pgp.mit.edu hochgeladen wurden, nicht mit der Welt synchronisiert werden.

Daher ist es vielleicht ratsam, gleich einen Pool von Keyservern zu benutzen.

Ein Beispiel wäre der Verbund von sks-keyservers.net (an denen pgp.mit.edu "eigentlich" auch teilnehmen sollte).

Dazu in die ~/.gnupg/gpg.conf folgenden Keyserver eintragen:

# Ganzer Pool
keyserver hkp://pool.sks-keyservers.net
# Europäischer Pool
keyserver hkp://eu.pool.sks-keyservers.net


Und anschliessend prüfen, ob es funktioniert:
gpg --search-keys dirk@deimeke.net (als Beispiel).

Mehr zu Keyservern findet sich in der Wikipedia.

Mailserver-Tutorials ...

Ein Bekannter von mir fragte an Silvester nach Mailserver-Tutorials, ich möchte Euch die Ausbeute nicht vorenthalten.

Das ist das beste Tutorial, das ich persönlich kenne, mein Mailsetup ist nach dem Muster einer deutlich älteren Version des Tutorials aufgebaut worden. Ich setze zwar CentOS ein, aber die Ideen von Christoph sind sehr gut.

ISPmail tutorial

Dann sind mir bei Friendica noch die folgenden Tutorials empfohlen worden. Zur Qualität kann ich leider nichts sagen.

Vielleicht hilft es ja dem Einen oder Anderen.

Weitere Empfehlungen von Lesern des Blogs

Finanzen an Open-Source-Projekte ...

gedanken Ich höre jetzt immer häufiger von Open-Source-Projekten einen Satz wie "Wenn Dir unsere Software hilft, dann spende uns Geld."

Tatsächlich frage ich mich, wie ich das machen soll. Wie soll man aus dem Wust an Open-Source-Projekten die zu unterstützenden auswählen? Auch, wenn ich nicht schlecht verdiene, kann ich keinesfalls alle Projekte unterstützen.

Mitglied bin ich bei der Open Source Initiative, der Free Software Foundation Europe und "Individual Supporter" der Linux Foundation.

Auf meinen Servern sind rund 1000 Pakete installiert, auf meinem Desktopsystem etwa 2500 Pakete, dazu kommen noch Android Apps und Software, die nicht pakettiert ist. Nahezu alle Software, die installiert ist, benutze ich auch.

Mein Ansatz ist da eher, dass ich mich neben den Mitgliedsschaften selber für Free/Libre Open Source Software zu engagieren. Dazu gehört insbesondere, meine Erzeugnisse unter freie Lizenzen zu stellen: Für Software verwende ich die MIT-Lizenz und für den Rest CC-BY.

Wie haltet Ihr das?

Wie ich Taskwarrior nutze ...

taskwarrior

Wie in den Kommentaren eines anderen Blogartikels angeregt, schreibe ich hier gerne einmal zusammen, wie ich Taskwarrior benutze.

Meinen Workflow habe ich auf den Seiten von Taskwarrior beschrieben.

Hier ist eine aktualisierte Fassung:

Wo nutzt Du Taskwarrior?

Taskwarrior benutze ich nicht auf der Arbeit, weil ich dort hinter sehr strikten Proxies bin, die den Zugriff auf meinen Taskserver nicht erlauben.

Allerdings nutze ich meine privaten Taskwarrior Instanzen auch, um Aufgaben aus dem Job zu verwalten, weil ich damit alles in einer zentralen Lösung habe.

In den letzten Jahren habe ich fast alles Features von Taskwarrior einmal ausprobiert, bin aber jetzt zu einem sehr rudimentären Rumpf an Einstellungen geschrumpft.

Ich nutze immer die aktuelle Entwicklerversion.

Für welche Art Arbeit nutzt Du Taskwarrior?

Tatsächlich überwiegend für längerfristige Aufgaben, die nicht vergessen werden dürfen. Ich schreibe nicht alle Aufgaben in Taskwarrior.

Wie synchronisiert Du die Aufgaben, welche Geräte benutzt Du?

Da Taskwarrior für Android (kein offizielles Tool) oder Taskwarrior in Termux nicht die aktuelle Entwicklerversion als Basis haben, nutze ich Taskwarrior ausschliesslich auf Linux-Systemen mit einer Internetverbindung, die nicht Proxies benutzen müssen. Ich kompiliere Taskwarrior aus den Quellen selber.

Alle (meine) Taskwarrior-Instanzen synchronisieren gegen einen selbstgehosteten Taskserver. Alle Instanzen haben die gleiche Konfiguration, mit einem Unterschied, dass nur auf meinem Notebook der Eintrag "recurrence=no" fehlt.

Welchen Standard-Report benutzt Du?

Den "next"-Report ohne weitere Modifikationen.

Benutzt Du eine Standard-Methode oder auf Dich angepasst Methodik?

Aufgabenverwaltung ist sehr individuell, ich benutze einen Mix aus Methoden. Ein paar Informationen dazu finden sich in einem Vortrag, den ich vor zwei Jahren zum letzten Mal gehalten habe.

Nutzt Du irgendwelche Erweiterungen oder Hook-Scripts?

Nein.

Auf welches Feature vertraust Du am meisten?

Nahezu alle meine Aufgaben haben Zieldatum, auch wenn manche davon künstlich sind oder auch nicht von mir in der Zeit erledigt werden können.

Ich nutze das "wait"-Feature sehr häufig, um meine Aufgabenliste zu bereinigen.

Um meine Aufgaben zu organisieren, nutze ich Projekte und Subprojekte. Das hilft, mir den Überblick zu behalten und Aufgaben danach zu filtern.

Ausser "Virtual Tags" nutze ich keine weiteren Tags.

Für mich sind "Annotations" eines der wesentlichen Features, das nutze ich sehr häufig. Für angehängte URLs oder Pfade zu Dateien benutze ich Taskopen.

Ich benutze Anmerkungen auch, um meine privaten und beruflichen Ziele für einen Monat, ein Jahr und fünf Jahre zu verwalten. Die Ziele werden jeden Monat überprüft.

Welche Features nutzt Du bewusst nicht?

Ich benutze ganz selten nur Abhängigkeiten, zumeist benutze ich ein Datum, um zu steuern. Die eine Aufgabe hat ein Fälligkeitsdatum Ende der Woche und die nachfolgende Aufgabe ein Wartedatum Anfang nächster Woche.

Unglaublich, aber war, ich nutze Prioritäten überhaupt nicht.

Wie schaust Du Deine Aufgaben durch?

Dazu benutze ich das Review-Kommando der Taskshell.

Weitere Punkte

Ich benutze ein sehr rudimentäre Konfiguration bestehend aus einem Farbschema, Montag als Wochenstart, calendar.details=full und calendar.holidays=sparse.

Auch, wenn es keinen Sinn ergibt, nutze ich manchmal "wait:someday", um Aufgaben komplett aus dem Weg zu räumen. Man kann sie ja mit "task waiting" immer noch sehen.

Ich schreibe nicht alles in Taskwarrior. Ich habe ein Gehirn und bin gewillt es zu benutzen.

Fragen per Mail

Per Mail sind mir Fragen gestellt worden, deren Antworten ich hier gerne auch nenne.

Im Rahmen meiner Arbeit für Taskwarrior habe ich einen ganzen Haufen an Artikeln geschrieben und Vorträgen gehalten.

Beispielsweise Aufgabenverwaltung auf der Kommandozeile oder den Workshop bei Pro-Linux.

Weitere Vorträge finden sich auf meinem Speakerdeck-Account.

Verwendest du TW für private und geschäftliche Aufgaben?

Ja, allerdings auf privaten Geräten.

Setzt du bei allen Aufgaben einen Termin?

Ja, das mache ich.

Sortierst du die Aufgaben in Kategorien und/oder Projekte ein?

Ich benutze sehr intensiv Projekte und Unterprojekte, dafür aber keine Tags.

Wie priorisierst du in TW deine Aufgaben, damit diese ganz oben in deiner Liste stehen?

Da löse ich alles über das Fälligkeitsdatum. Ich blende Aufgaben auf, die nicht in den nächsten Wochen anstehen. Das führt dazu, dass ich selten mehr als eine Bildschirmseite benutzen muss.

Alternativ nutze ich "+next", um die Dringlichkeit (Urgency) zu erhöhen.

Recurring-Termine

Bei den Recurring-Terminen hatte ich in TW Problem, die Übersicht zu behalten bzw. viel Arbeit, diese ständig neu zu terminieren, wenn mal ein Termin nicht eingehalten wurde (passiert mir leider viel zu oft).

Taskwarrior ist keine Terminverwaltung ...

Hast Du Dir für den Fall einmal Dependencies angeschaut?

Wie klappt das bei dir?

Bei mir klappt es ganz gut. Ich vermisse ein paar Features, die mit Taskwarrior 3.0.0 kommen werden, da wird die Recurrence komplett überarbeitet.

Nextcloud als Zentrum der Selbstverwaltung ...

Es passt gerade gut zum Artikel Kalender und Notizbuch von Thomas, daher ziehe ich diesen geplanten Artikel einmal vor.

Die Software, die ich im Folgenden empfehle, findet sich auch in den offiziellen Stores oder den Erweiterungsseiten der Software, ich verlinke aber die entsprechenden "Heimatseiten".

Bei mir kristallisiert sich immer mehr eine selbstgehostete Nextcloud-Instanz als zentraler Dreh- und Angelpunkt meiner "Selbstverwaltung" heraus.

Termine liegen in der Nextcloud, meine Frau und ich haben da vier Kalender, die wir miteinander teilen.

Persönliche Termine von mir und ihr, Geschäftstermine Ihrer Hundeschule (sie ist selbständig) und einen Kalender "Blindtermine", in dem noch nicht feststehende Daten zu finden sind. Das klappt hervorragend, der Google Kalender hat für mich keinen Zusatznutzen.

Dazu kommt, dass auch die Kontakte in der Nextcloud liegen und von dort mit Webmail (Rainloop), Thunderbird (CardBook) und den Telefonen (Android und die iOS-Dienstgeräte) synchronisiert werden.

Unter Android nutze ich DavDroid zur Synchronisation der Daten und den Business Calendar 2 zur Verwaltung der Daten.

Nebenbemerkung: Für den Versand grosser Dateianhänge mit Thunderbird wirkt das Plugin Nextcloud for Filelink Wunder.

Für Notizen habe ich vor kurzem Joplin für mich entdeckt, Open-Source-Software und es gibt Binaries für Android, iOS, MacOS, Windows und Linux, leider keinen Webclient, aber damit kann ich leben. Daten werden in der eigenen Nextcloud gespeichert.

Meine Aufgaben verwalte ich (schon) immer noch mit Taskwarrior, ich habe noch nichts gefunden, was für mich besser ist. Taskwarrior nutze ich nicht auf Telefonen, dort mache ich mir nur eine Notiz, aber auf dem Notebook, den Servern und via SSH vom Diensttablet.

Docker-Hilfe ist hilfreich ...

docker Prinzipiell finde ich es ja super, dass die Docker-Kommandos eine eingebaute Hilfsfunktion haben, aber manchmal ist die Hilfe schon anders als erwartet.

Ich war mir nicht sicher, ob ich zuerst den Quell- oder Zieltag angeben muss beim Docker-Tag-Kommando:

$ docker tag --help

Usage:  docker tag IMAGE[:TAG] IMAGE[:TAG]

Tag an image into a repository

Options:
      --help   Print usage

Hotel-WLAN ...

linux Am vergangenen Wochenende durfte ich einmal mehr in einem Hotel zu Gast sein, das ein kaputt konfiguriertes WLAN hatte. Manchmal frage ich, was die Dienstleister befürchten, wenn sie den Zugang so kastrieren.

Für mich ist elementar, dass ich via SSH auf meine Server zugreifen kann, aber Port 22 ausgehend war geblockt. Das habe ich relativ schnell in den Griff bekommen, in dem ich via "Remote Console" auf einem meiner Server sslh installiert habe. sslh nimmt Verbindungen auf Port 443 (https) an und entscheidet mit dem Handshake an welchen Dienst die Verbindung "übergeben wird". Das klappt problemlos und ziemlich gut, wenn der WLAN-Administrator nicht auf Protokollebene blockt.

Zugriff geht dann via:

ssh -p 443 user@sslh-server.example.net


Die Weiterverbindung auf andere Server lässt sich dann mittels folgendem Befehl realisieren (das geht auch transparent mit der unten aufgeführten Lösung):

ssh -o ProxyJump=user@sslh-server.example.net user@ziel.example.com


Für reine SSH-Verbindungen ist das prima, aber es gibt ja zum einen noch andere Dienste (unter anderem Usenet, Protokoll nntp, Port 119), die ich auch noch nutzen möchte.

Da kommt dann das Tool sshuttle zum Einsatz. sshuttle benutzt SSH, um darüber alle tcp-Verbindungen plus DNS mittels Paketfilterregeln weiter zu leiten. Um die lokalen Regeln anzupassen wird sudo-Zugriff auf den root-Account benötigt.

sshuttle --dns --remote=user@sslh-server.example.net:443 0/0


Für mich funktioniert das und es macht "falsch" konfigurierte Netzwerke benutzbar.

Powerline ...

linux Ich habe jetzt einmal meinen Prompt von Liquid Prompt auf Powerline umgestellt, weil es damit ein wenig konsistenter ist, da sowohl die Shell wie auch Vim und tmux unterstützt werden.

Bei Fedora 27 ist Powerline direkt dabei, bei CentOS muss man Powerline "von Hand" installieren, das Verfahren wird auch bei anderen Distributionen funktionieren.

Fedora 27:
dnf install powerline tmux-powerline vim-powerline
systemctl enable powerline
systemctl start powerline


CentOS 7:
yum install python-pip
pip install powerline-status

cd /usr/share/fonts
curl -LO https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
fc-cache -vf /usr/share/fonts/

cd /etc/fonts/conf.d/
curl -LO https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf


.bashrc
export POWERLINE_BASH_CONTINUATION=1
export POWERLINE_BASH_SELECT=1

# Fedora 27:
source /usr/share/powerline/bash/powerline.sh

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh


.vimrc
# Nur CentOS 7:
set rtp+=/usr/lib/python2.7/site-packages/powerline/bindings/vim/

# Fedora 27 und CentOS 7:
set laststatus=2


.tmux.conf
# Fedora 27:
source /usr/share/tmux/powerline.conf

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf