Seite wählen

NETWAYS Blog

Neueste Beiträge

Redis Eviction Policies

Redis Eviction Policies

After install Redis you don't have any settings configured to control memory consumption. In Production this brings OOM to the arena which leads into a broken applications. First thingy what users do is to configure MaxMemory config setting (like me of course ;-)). In...

Kubernetes: Mehrere Cluster mit kubectl

Kubernetes: Mehrere Cluster mit kubectl

Während man mit Kubernetes arbeitet oder entwickelt, wird man in den seltensten Fällen alles auf einem Cluster machen. Ob man ein lokales Minikube verwendet, oder Zugriff auf verschiedene Cluster für Produktion und Testing hat, muss man die Daten ja verwalten, und...

Webinar am 10.02.2021: Icinga 2 kurz erklärt!

Webinar am 10.02.2021: Icinga 2 kurz erklärt!

Am Mittwoch, den 10.02.2021 ist es soweit, wir bringen Euch ein Webinar zum Thema Icinga 2 Basics. Anhand eines Walkthrough durch unsere Icinga Web 2 Demo-Oberfläche möchten wir Euch einen allgemeinen Überblick geben, was Icinga 2 für Euch tun kann. Es gibt einiges an...

Beratung & Technology

Icinga for Windows – Hyper-V und Cluster Plugins Preview

Icinga for Windows – Hyper-V und Cluster Plugins Preview

Am heutigen Montag möchten wir mal unsere Icinga Kollegen zu Wort kommen lassen. Es gibt einiges an Neuerungen im Bereich Icinga for Windows! Seit letztem Mittwoch haben wir großartige Neuigkeiten für alle, die Icinga zur Überwachung von Hyper-V und Windows Cluster...

Elastic Stack Trainings – Last Minute Call

Elastic Stack Trainings – Last Minute Call

Möchtest Du mehr rund um Elasticsearch, Logstash, Kibana & Beats erfahren? Schau Dir doch mal unsere Elastic Stack Schulungen an. Du hast bereits am 02. Februar 2021 die Chance, in die Elastic Stack Welt einzutauchen. Selbstverständlich hast Du, vor allem in...

PostgreSQL Einstieg unter openSUSE-Leap 15.2

PostgreSQL Einstieg unter openSUSE-Leap 15.2

da die meisten User sich zwar mit MySQL oder MariaDB auskennen, werde ich heute mal auf PostgreSQL eingehen, wie man dieses Paket installiert und ein paar Kommandos zur Verwaltung einer Datenbank. PostgeSQL ist von den Kommandos ähnlich wie zum Beispiel MariaDB. Sie...

Events & Trainings

DevOps Meetup Remote: Seid dabei am 3.12.2020 ab 18 Uhr!

DevOps Meetup Remote: Seid dabei am 3.12.2020 ab 18 Uhr!

Wir freuen uns, am 3.12.2020 ab 18:00 Uhr der Gastgeber und Hoster des DevOps Meetups für Dezember 2020 zu sein! Wie, Ihr kennt das noch nicht? Na dann lest mal weiter: Das DevOps Meetup wird schon seit langem von der DevOps Nürnberg Gruppe veranstaltet und hat hier...

Online stackconf 2021: Call for Sponsors is open!

Online stackconf 2021: Call for Sponsors is open!

The focus of stackconf is to present innovative solutions in the spectrum of container, hybrid and cloud technologies and to discuss what the future of open source infrastructures could look like.   Sponsors for stackconf 2021 listen up! Interested in...

stackconf 2021 online: Call for Papers now open!

stackconf 2021 online: Call for Papers now open!

Check out  the European tech conference for open source infrastructure solutions in the spectrum of agile methods, continuous integration, container, hybrid and cloud technologies. Get ready Bridge the gap between development, testing and operations! stackconf covers...

Web Services

NWS Jitsi – new features!

NWS Jitsi – new features!

One reason, why our apps are so good, is we continuously develop or enable new features for the apps. The security of our apps is very important to us. But we also listen to our customers feedback. A lot messages reached us with new feature requests to improve the NWS...

Videokonferenz – wie funktioniert das?

Videokonferenz – wie funktioniert das?

Während früher für Videokonferenzen dedizierte Soft- und teilweise auch Hardware erforderlich war, klappt das heutzutage mit jedem modernen Browser. Eine Grundvoraussetzung war sicher die heute verfügbare schnellere Hardware. Was früher zwingend nach optimierten Chips...

NWS Jitsi – new features!

3 Gründe, wieso Du Jitsi verwenden solltest

Ich muss sagen, ich bin wirklich dankbar und schätze mich sehr glücklich, dass ich zum einen die Möglichkeit habe, von zu Hause aus arbeiten zu können und zum anderen die Möglichkeit bekomme, von zu Hause aus zu arbeiten. Das bedeutet im Umkehrschluss natürlich, die...

Hardware

brevis.one Tech Refresh

brevis.one Tech Refresh

Da dieses Jahr die Gateway- Sparte von Braintower von BASIS gekauft wurde und das Gateway jetzt brevis.one heißt, haben wir vor Ende des Jahres noch viele neue Informationen für Euch! 3G Abschaltung Wie in meinem Blogpost 3G Abschaltung Juni 2021 schon erwähnt, werden...

NETWAYS Shop: Unsere Bestseller 2020

NETWAYS Shop: Unsere Bestseller 2020

Trotz Corona und allen damit verbundenen notwendigen Einschränkungen können und möchten wir uns bei allen NETWAYS Shop Kunden für Euer Vertrauen und Eure Treue bedanken! 2020 war nicht nur für uns erfolgreich, sondern auch für unsere Hersteller. Daher wollen wir mal...

HWgroup: SensDesk Update 2.1.4. verfügbar

HWgroup: SensDesk Update 2.1.4. verfügbar

Die von HWgroup entwickelte Software SensDesk, die die HWGroup Messgeräte steuern kann, steht vor einem neue Update. Da auch unsere Kundschaft diese SensDesk zum Teil im Einsatz haben, wollen wir aus dem NETWAYS Shop, diese Information nicht vorenthalten. Das Update...

Unternehmen

Monthly Snap January 2021

Monthly Snap January 2021

  In January most of us were working from home, and some took a few days off in the beginning of the month. And still so many great blog posts were written!   Stackconf 2021   The stackconf in June will be awesome! Do you want to contribute and become a...

Alle Beiträge

Kubernetes: Mehrere Cluster mit kubectl

Während man mit Kubernetes arbeitet oder entwickelt, wird man in den seltensten Fällen alles auf einem Cluster machen. Ob man ein lokales Minikube verwendet, oder Zugriff auf verschiedene Cluster für Produktion und Testing hat, muss man die Daten ja verwalten, und auswählen in welchem Kontext man gerade arbeitet.

Struktur der Konfiguration

Die Konfiguration für kubectl und andere Kubernetes Clients findet man normalerweise in $HOME/.kube/config. Ich möchte hier ein paar Beispiele zeigen, wie man hier neue Cluster hinzufügen kann. Der Inhalt sieht im einfachsten Fall so aus. Hier sind die Daten bzw. Secrets abgekürzt.

apiVersion: v1
kind: Config
current-context: my-cluster
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://my-cluster:6443
  name: my-cluster
contexts:
- context:
    cluster: my-cluster
    user: admin
  name: my-cluster
users:
- name: admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

Hier sind nun folgende Bereiche wichtig:

  • clusters definiert die bekannten Cluster mit API Endpunkt (URL) und dem passenden CA Zertifikat
  • users definiert Zugangsdaten und Authentifizierungsmechanismen, meistens ein Client Zertifikat, Auth-Tokens oder SSO Daten
  • contexts verbindet Cluster und Authentifizierung, und erlaubt auch das setzen des Namespaces
  • current-context zeigt an welcher Context gerade benutzt wird

Die aktuell verwendete Konfiguration kann man sich bequem anzeigen lassen, und dabei werden dann auch die Detaildaten zensiert – wie oben.

kubectl config view

Andere Konfigurations Dateien

Viele Kubernetes Anbieter stellen direkt die fertige Konfigurationsdatei zur Verfügung, die speichert man entweder direkt unter $HOME/.kube/config oder spezifiziert diese explizit.

kubectl --kubeconfig /tmp/my-config config view

export KUBECONFIG=/tmp/my-config
kubectl config view

Dabei wird nun diese Datei alleine geladen und ist direkt benutzbar. KUBECONFIG gilt dann für alle weiteren Befehle in der Shell auch.

Verbinden der Konfiguration

Um mehrere Dateien zusammenzuführen kann man nun auch mehrere Dateien laden, eine

KUBECONFIG=~/.kube/config:/tmp/my-config kubectl config view

Bitte unbedingt die Datei vor dem speichern prüfen, doppelte Namen können zu Fehlern führen und der Context wird dann neu gesetzt.

Für kleinere Korrekturen kann man dann auch problemlos die Datei nachträglich von Hand editieren.

Tools und Shell Erweiterungen

Ich nutze gerne die Tools kubectx und kubens um schnell zwischen verschiedenen Kontexten umschalten zu können, bzw. zu sehen mit was ich gerade arbeite. Dazu gibt es auch die praktische Auto-Vervollständigung für die Shell.

Welchen Kontext bzw. Namespace ich gerade nutze, zeigt mir außerdem mein Bash Prompt auch an. Hier am Beispiel von powerline-shell mit meinen Modifikationen.

Es existieren auch einfachere Möglichkeiten, wie die kube-ps1 von jonmosco auf GitHub.

Mehr Infos

Wir bereiten gerade unsere neue Kubernetes Quick Start Schulung vor um den Teilnehmern einen schnellen Einstieg in die Benutzung von Kubernetes zu bringen. Wenn du Interesse hast mehr mit uns in Kubernetes einzusteigen, schau doch mal nach den Terminen.

Das Headerbild stammt von Loik Marras via unsplash.

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

NETWAYS stellt sich vor – Marianne Spiller

This entry is part 3 of 32 in the series NETWAYS stellt sich vor

 

 

Name: Marianne Spiller
Alter: unpopulärer ist nur die Frage nach dem Gewicht
Position bei NETWAYS: Senior Consultant & System Archaeologist
Bei NETWAYS seit: Corona März 2020

Was genau gehört zu Deinem Aufgabenbereich bei NETWAYS?

Ich bin in erster Linie im Bereich der Betriebsunterstützung unterwegs, und das ist definitionsgemäß ein weites Feld: von geplanten Wartungsarbeiten, Upgrades, Optimierungen und Dokumentation bis hin zu Analyse und Behebung kritischer Ausfälle in Kundenumgebungen ist alles dabei.

Was machst Du, wenn Du mal nicht bei NETWAYS bist?

Ich bin Mutter der beiden tollsten Töchter überhaupt, die halten gut auf Trab — aber das Konzept „Langweile“ ist mir generell vollständig fremd: neben grundsoliden Tätigkeiten wie Kochen, Backen und Handarbeiten treibe ich die Themen „Smart Home“ und „Blog“ weiter voran. Außerdem schnitze ich (unter massiv Corona-erschwerten Bedingungen) an meinem zweiten Buch — und ohne Fotografie/Bildbearbeitung bin ich einfach kein Mensch 🙂

Wie geht es in Zukunft bei Dir weiter?

Hauptsache vorwärts; der Rest ergibt sich.

Marianne Spiller
Marianne Spiller
Senior Consultant

Nachdem sie über Jahre immer wieder für eine NETWAYS Mitarbeiterin gehalten wurde, hat sie im März 2020 ernst gemacht und wurde eine. Als Senior Consultant unterstützt sie fortan Professional Services. Ihre Freizeit widmet sie in weiten Teilen dem Schreiben, man findet sie aber auch häufig mit Kamera und Stativ auf unwegsamem Gelände.

Webinar am 10.02.2021: Icinga 2 kurz erklärt!

Am Mittwoch, den 10.02.2021 ist es soweit, wir bringen Euch ein Webinar zum Thema Icinga 2 Basics.

Anhand eines Walkthrough durch unsere Icinga Web 2 Demo-Oberfläche möchten wir Euch einen allgemeinen Überblick geben, was Icinga 2 für Euch tun kann. Es gibt einiges an Erweiterungen durch integrierte Module zu sehen sowie natürlich auch die richtigen Basics, die in keiner Umgebung fehlen sollten. Wir werden einen Blick werfen in das BusinessProcess Module, das vSphere Module und ins Reporting. Des Weiteren wollen wir Euch kurz Neuigkeiten zu Icinga for Windows mitgeben. Im Anschluss freuen wir uns auf Eure Fragen rund um das Thema Icinga 2, Icinga Web 2 und deren Features.

Wann und Wo

Los geht es am Mittwoch, den 10.02.2021 ab 10:30 Uhr auf dem NETWAYS Youtube Channel. Einfach rechtzeitig über diesen Link in den Stream kommen.

Wer es bis dahin nicht erwarten kann, dem empfehlen wir unsere vergangenen Webinare im Webinararchiv oder auf dem NETWAYS YouTube Channel. Dort können auch Videos der Vorträge unserer vergangenen Konferenzen abgerufen werden. Über anstehende Webinare könnt Ihr Euch immer hier informieren.

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...

HW group STE2 R2 PoE: Umfangreiches Hardware Update!

Bereits die erste Version des HW group STE2 R2 PoE – der Nachfolger des STE2 – war mit seinen damaligen Verbesserungen schon ein echter Hingucker. Jetzt legt HW group nochmal eins drauf und erfüllt einige der Wünsche unserer Kunden.

Das Gerät kann nach dem Download der neuen Software-Version folgende Wertetypen und -bereiche messen, auslesen und verarbeiten:

  • Temperatur von -200° bis +200° C
  • relative Luftfeuchtigkeit von 0 – 100 %
  • Präsenzerkennung von Stromversorgung/Stromfluss
  • externe Sensoren/Detektoren über digitale Eingänge
  • punktuelle Wasserlackage-Detektoren
  • Wasserleckageerkennung unter Anwendung von Sensorseilen

Insgesamt können nach dem Update bis zu 5 1-Wire oder bis zu 5 1-Wire-UNI Sensoren angeschloseen sowie bis zu 2 digitale Eingänge pro STE2 R2 genutzt werden. Des Weiteren hat HW group hier auch noch Sensorboxen angekündigt, die sich für die kombinierte Überwachung von Temperatur, Luftfeuchtigkeit, Luftdruck und CO2 einsetzen lassen sollen. Hier haben wir eine deutliche Verbesserung bzgl. der Sensoranzahl (von ursprünglich 3 auf 5) und der Auswahl an Sensoren, da jetzt auch frei aus allen 1-Wire-UNI Sensoren gewählt werden kann.

 

Den Download der Software-Version 1.3.11 findet man hier und ist für alle STE2 Geräte geeignet, die über die Bezeichnung “STE2 R2” auf dem rückseitigen Label verfügen:

 

Hier nochmal ein kurzer Überblick über die Features, die das STE2 R2 PoE noch bietet:

  • LAN + WiFi
  • Open API: SNMP, XML
  • Stromversorgung über PoE oder externem Netzteil
  • Alarmierung per E-Mail oder SMS/Voice Call (hier wird z. B. das HW group SMS LTE Gateway benötigt). Alarmiert werden kann unter anderem bei Über-/Unterschreiten der definierten Schwellenwerte sowie bei Verbindungsverlust zu einem der Sensoren.

 

Selbstverständlich bietet HW group auch eine hervorragende Integration in das hauseigene SensDesk Monitoring an. Hier stehen dann folgende Optionen zu Verfügung:

  • Alarmierung per E-Mail oder SMS/Voice Call bei Über-/Unterschreiten der definierten Schwellenwerte
  • Alarmierung per E-Mail oder SMS/Voice Call bei Verbindungsverlust zu einem der Sensoren
  • Alarmierung per E-Mail oder SMS/Voice Call bei Verbindungsverlust zum System
  • Graphen mit Werten der letzten 3 Monate
  • PDF Reports mit den Graphen, die periodisch per E-Mail versendet werden
  • Schalten eines Remote Relais-Ausgangs je nach definierten Sensorwerten
  • Über die mobile SensDesk-App kann jederzeit auf die Werte zugegriffen werden
  • Nutzung als zentrales Geräte-Management

 

Sehr schön werden alle Features und Sensor-/Detektor-Optionen in dieser von HW group zur Verfügung gestellten Grafik aufgezeigt:

Bei Fragen rund um die Hardware aus unserem Shop helfen wir gerne persönlich weiter – wir sind erreichbar per Mail oder telefonisch unter der 0911 92885-44. Wer uns gerne bei der Arbeit ein bisschen über die Schulter schauen oder den Shop und die angebotenen Produkte verfolgen möchte, kann uns auch auf Twitter folgen – über @NetwaysShop twittert das NETWAYS Shop Team!

 

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...

Administrators Toolbox: Die Zsh

Einfuehrung

Zu jeder stereotypischen Hacking-Szene in einem Film oder einer Serie gehoert das Terminal in dem kryptische Ausdruecke, Befehle oder Programmcode ueber den Bildschirm huschen. Je nach Ausfuehrung ist das unterschiedlich laecherlich, aber nichtsdestotrotz ist das Terminal seit seiner Einfuehrung als Nutzerinterface eine der wichtigsten Schnittstellen zwischen Mensch und Maschine geblieben. Entstanden aus dem Wunsch und der Notwendigkeit mit einem Programm zur Laufzeit zu interagieren, war es ein langer Weg von den umfunktionierten elektrischen Schreibmaschinen (Teletype) ueber 80×25 Zeichen Monochrom-Roehrenmonitore (wahlweise in gruen oder orange) bis hin zu einem Terminal-Emulator als ein weiteres Fenster in der graphischen Oberflaeche.

Dialogisch mit dem System zu interagieren und mit vergleichsweise kleinen Anforderungen beliebig komplexe Prozesse anzustossen eroeffnen einem viele Moeglichkeiten und, nach Meinung des Autors, sind in vielen Anwendungen noch keine Alternativen in Sicht, die es besser machen wuerden. Mit Text als menschenverstaendliche Schnittstelle dient dienen Shell als eine Abstraktionshuelle fuer das Betriebssystem und andere Anwendungen, die einem zumindest auf Unix-aehnlichen Systemen noch sehr haeufig begegnet.

Der haeufig anzutreffende Platzhirsch in dem Feld der Shells ist die bash, die Bourne again shell, zumindest auf vielen gaengigen Linux-Distributionen und ist als solides und maechtiges Werkzeug bekannt. An manchen Stellen lassen sich jedoch ein paar Schwaechen finden und manchmal ein gewisser Komfort vermissen, gerade bei der Interaktion mit dem eigenen Desktop-System, deshalb wird hier eine Alternative thematisiert, die Z shell (kurz zsh). Die Geschichte, der Code und tiefere technische Details sollen hier nicht im Zentrum stehen, eher die konkrete Nutzung und einzelne Features.

Installation

Wie die Installation auf dem jeweiligen System verlaeuft haeng natuerlich von der Umgebung ab, auf Linux duerfte der jeweilige Packetmanager diesem Zweck dienen, hier reicht ein apt-get install zsh, aber your mileage may vary. Im Zweifelsfall kann man die entsprechenden Dateien auf der offiziellen Seite finden.

Konfiguration

Der wichtigste Teil an der Benutzung der zsh duerfte die Konfiguration sein, da sich eine Unmenge von Parametern veraendern lassen und viele der Features aktiviert/konfiguriert werden muessen. Fuer die Ungeduldigen gibt es eine Beispielkonfiguration, die im Folgenden Schritt fuer Schritt nachvollzogen wird. Ansonsten kann die zsh auch ohne Konfiguration gestartet werden, sie wird den Benutzer auf diesen Fakt hinweisen und Empfehlungen bezueglich des weiteren Vorgehens liefern. Auch liefern Distribution typischerweise eine Basiskonfiguration mit und die Suchmaschine der persoenlichen Wahl duerfte schnell ein Vielzahl von weiteren Beispielen und Anleitungen bieten. Am Ende dieses Beitrags sind auch noch einige Links als Startpunkt beigefuegt. Natuerlich sind auch die man-pages ein sinnvoller Anlaufpunkt.

Keybindings/Tastenkombination

# Use Vi(m) style key bindings.
bindkey -v

Die ist eine sehr minimale Konfiguration und weist die zsh an, vim-artige Tastenkombination zu verwenden. Dies ist eher minimal, Aktionen zur Navigation innerhalb der Eingabezeile und vieles mehr koennten hier konfiguriert werden.

Prompt

Die Prompt (also der Text, der vor jeder Eingabezeile steht) kann gut zur Darstellung von nuetzlichen Informationen genuetzt werden oder sollte mindestens huebsch sein.

[[ "$COLORTERM" == (24bit|truecolor) || "${terminfo[colors]}" -eq '16777216' ]] || zmodload zsh/nearcolor
autoload -Uz colors && colors

Zuerst wird versucht die Faehigkeiten des Terminal bezueglich der Darstellung von Farben zu bestimmen und die entsprechenden Module geladen

autoload -Uz promptsubst
autoload -Uz promptinit && promptinit
autoload -Uz vcs_info

Einige weitere Module, die die Personalisierung der Prompt ermoeglichen.

# Define the theme
prompt_mytheme_setup() {
local user
if [[ $USER == "root" ]] then
user="%F{9}%n"
else
user="%F{12}%n"
fi
if [[ ! -z $SSH_CLIENT ]] then
user="%F{3}SSH -> $user"
fi

Hier wird ein eigenes Theme begonnen, dass einen normalen Nutzer in einer Farbe darstellt und den Nutzer “root” in einer anderen.
Zusaetzlich wird angezeigt, ob man ueber SSH verbunden ist.

# Information about version control systems
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes yes
zstyle ':vcs_info:*' use-prompt-escapes yes
zstyle ':vcs_info:*' formats "%s - (%r|%b)" "%u%c"
local prefix="%(?..[%?%1v] )"
local vcs="%(2v.%U%2v%u.)"
PROMPT="%K{0}%F{9}$prefix%f%B$user@%M%f %F{7}%/%b%f%k
%B#%b %E"
RPROMPT="%K{0}%F{9}$vcs%f%k"
add-zsh-hook precmd prompt_mytheme_precmd
}

Die Prompt wird zusammengesetzt und um Information ueber git-Repositories ergaenzt, falls das aktuelle Arbeitsverzeichnis sich in einem solchen befindet.

prompt_mytheme_precmd () {
setopt noxtrace noksharrays localoptions
local exitstatus=$?
local git_dir git_ref
psvar=()
[[ $exitstatus -ge 128 ]] && psvar[1]=" $signals[$exitstatus-127]" || psvar[1]=""
vcs_info
[[ -n $vcs_info_msg_0_ ]] && psvar[2]="$vcs_info_msg_0_"
}

Vor jeder Promptdarstellung wird der EXITSTATUS des vorherigen Programms ueberprueft und angezeigt, falls dieser !=0 (Fehler) ist.

# Add the theme to promptsys
prompt_themes+=( mytheme )
# Load the theme
prompt mytheme

Die Prompt wird geladen.

Noch einige Optionen

setopt nobeep
Deaktiviere die Terminal-“Glocke”.

setopt autocd
Die Eingabe eines Verzeichnisnamens wird als “cd $VERZEICHNIS” interpretiert.

# Prevent overwriting existing files with '> filename', use '>| filename'
# (or >!) instead.
setopt noclobber

Verhindere versehentliches Ueberschreiben von Dateien durch Redirection.

# Enable zsh's extended glob abilities.
setopt extendedglob

Erweitertes globbing.

setopt longlistjobs
Bei der Ausgabe von jobs wird die PID mit angezeigt

Autovervollstaendigung

## Initialize completion
autoload -Uz compinit && compinit

# Automatically list choices on an ambiguous completion.
setopt autolist
## show list of tab-completing options
zstyle ':completion:*:default' list-prompt '%p'
## cache completion for re-use (path must exist)
zstyle ':completion:*' use-cache yes; zstyle ':completion:*' cache-path
## _complete -> completiong
## _expand -> expand variables
## _prefix -> ignore everything behind cursor
## _approximate -> fuzzy completion
## _ignore -> ignore some matches (i.e. directories when doing cd)
zstyle ':completion:::::' completer _expand _complete _prefix _ignored _approximate
## one wrong character every X characters is corrected
## X = 5 is a reasonable default
zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX + $#SUFFIX) / 5 )) )'
## correct lowercase to uppercase
zstyle ':completion:*:(^approximate):*' matcher-list 'm:{a-z}={A-Z}' # Kleinschreibung automatisch zu Grossschreibung korrigieren.
## keep magic prefixes like '~' when expanding
zstyle ':completion:*:expand:*' keep-prefix yes
## compelte a/b/c zu abc/bcd/coo
zstyle ':completion:*' list-suffixes yes
## colors in completion menu ##
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
# allow autocomplete-navigation with arrowkeys
zstyle ':completion:*' menu select #enable a menu which can be browsed with arrow keys
# tab completion after pressing tab once (default is twice)
setopt nolistambiguous
# allow in word completion
setopt completeinword

Diverse Einstellungen zur Autovervollstaendigung, unter anderem die Darstellung der validen Optionen und Vervollstaendigung in Woertern.

History/Geschichte

Gerade bei der Historie ist der Nutzen der zsh am deutlichsten, so koennen Befehle ohne grosse Umwege direkt nach Eingabe in die Historie geschrieben werden, ohne dass grosse Umwege beschrieben werden wie es bei der bash normalerweise noetig waeren.

# write command to historyfile imediatelly
setopt appendhistory
setopt incappendhistory
## max size and location of history-savefile
STSIZE=20000
SAVEHIST=20000
if [[ ! -a ~/logs ]] {
mkdir ~/logs
}
HISTFILE=~/logs/zshhistory.log
## no duplicated commands
setopt histignoredups
## no emptylines
setopt histignorespace
# Fancy search for history. Install peco
if ! [ -x "$(command -v peco)" ]; then
bindkey '^R' history-incremental-pattern-search-backward
else
## bind peco to ctrl-R as a better reverse search than the buitin if it is available
reverse_search(){print -z "$(tac ${HISTFILE} | peco)"}
zle -N rs_peco reverse_search
bindkey "^R" rs_peco
PECO=/usr/bin/
fi

Zusaetzlich wird hier das Programm peco fuer die Suche in der Historie verwendet (falls vorhanden). Dies stellt die passenden Eintraege sehr schnell und sichbar dar.

Gemischtes

umask 077
Stellt die umask sehr restriktiv ein. Dateien muessen dann erst fuer andere lesbar gemacht werden.

LS_COLORS=$LS_COLORS:'di=0;35:'; export LS_COLORS
Farbschemata fuer ls.

if [[ -f ~/.config/zsh/aliases ]]; then
source ~/.config/zsh/aliases
fi

Lese Aliase aus der Datei ~/.config/zsh/aliases, falls vorhanden.

export EDITOR=nvim
Setze neovim als Standart-Editor fuer die Umgebung.

if [[ -d ~/scripts ]] {
export PATH=$PATH:~/scripts
}

In ~/scripts sind selbst erstellte Skripte des Nutzers und werden hiermit direkt nutzbar.

man() {
env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
LESS_TERMCAP_md=$(printf "\e[1;31m") \
LESS_TERMCAP_me=$(printf "\e[0m") \
LESS_TERMCAP_se=$(printf "\e[0m") \
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
LESS_TERMCAP_ue=$(printf "\e[0m") \
LESS_TERMCAP_us=$(printf "\e[1;32m") \
man "$@"
}

Dies faerbt man-pages ein und macht sie dadurch leichter lesbar.

Aliase

Aliase sind frei konfigurierbare “Pseudokommandos” die durch die zsh ausgewertet und durch die richtigen Kommandos ersetzt werden. Dies bietet sich meistens fuer haeufig gebrauchtet Kommandos an.
alias ll="ls -llh --color=auto" ist ein gutes (und haeufiges) Beispiel dafuer.
Damit kann die detailierte Ansicht von ls direkt und ohne Tippen der Optionen benutzt werden. Beispiele fuer nuetzliche Aliases sind vielerlei zu finden, aber ein guter Ansatz ist immer die Frage, welche Kommands haeufig benoetigt werden und die daher sinnvoll abgehkuerzt werden koennten.

Fuer Tippfaule bietet es sich an, haeufige Befehle stark abzukuerzen, etwa alias v="vim" oder alias g="git".

Noch mehr “Features”

  • zsh kann nativ sockets und  TCP-Verbindung oeffnen, man kann also ohne weiteres (simple) Netzwerkkommunikation damit (warum auch immer) (zsocket bzw. ztcp)
  • Auch FTP ist nativ vorhanden, falls man nur kurz einen FTP-Client braucht (zftp)
  • Auch eingebauter Kalender ist ist vorhanden (cal)

Abschluss und Weiterfuehrendes

Alles hier ist nur ein kleiner Einblick in die Moeglichkeiten und Konfigurationen und erhebt auf keinen Fall einen Anspruch auf Vollstaendigkeit. Falls weitergehendes Interesse besteht, sind noch ein paar Links angehaengt, die mindestsens mal als Einstieg dienen. Natuerlich sind Korrekturen und Vorschlaege hier erwuenscht und koennen gerne in den Kommentaren oder auf anderem Weg uebermittelt werden. Damit bleibt fuers Erste nur noch der Leserin Spass beim Experimentieren zu wuenschen und vielen engagierten Bastlern zu danken, die zum Einen das Alles gebaut haben, aber auch Beispiele und Dokumentation bereitstellen.

Froehliches Shell-Hacken 🙂

Lorenz Kästle
Lorenz Kästle
Consultant

Lorenz hat seinen Bachelor der Informatik an der FAU gemacht und sich zuletzt mit Betriebssystemen dort beschäftigt. In seiner Freizeit beschäftigt er sich ein wenig mit XMPP und der Programmiersprache Erlang.

Veranstaltungen

Mrz 02

Icinga 2 Fundamentals Training | Online

März 2 @ 09:00 - März 5 @ 17:00
Mrz 09

Ansible Fundamentals Training | Online

März 9 @ 09:00 - März 11 @ 17:00
Mrz 12

Ansible AWX (Tower) Training | Online

März 12 @ 09:00 - 17:00
Mrz 23

GitLab Advanced Training | Online

März 23 @ 08:00 - März 25 @ 17:00
Mrz 23

Ansible Advanced Training | Online

März 23 @ 09:00 - März 24 @ 17:00