ShellCheck

Das Shellskript ist fertig und wartet auf seinen Einsatz. Wer das eigene Skript vor dem Einsatz überprüfen möchte, sollte ShellCheck ausprobieren. Bei ShellCheck handelt es sich um ein Tool zur statischen Code-Analyse von Shell-Skripten. Neben allgemeinen Skriptfehlern, weißt ShellCheck dabei auch auf andere Probleme hin und schlägt Verbesserungen vor.

ShellCheck in Aktion

ShellCheck in Aktion

Neben der Webseite, welcher unter shellcheck.net zu finden ist, kann ShellCheck auch auf der Konsole ausprobiert werden. Das Tool ist unter der GPLv3 lizenziert und damit freie Software. Der Quelltext ist auf GitHub zu finden.

Kreativer Sortieralgorithmus

Es gibt viele Sortieralgorithmen und einige davon wie Bogosort sind Musterbeispiele für schlechte Algorithmen. Auf 4Chan wurde vor einiger Zeit ein sehr kreativer Algorithmus zum Sortieren vorgestellt:

#!/bin/bash

function f() {
    sleep "$1"
    echo "$1"
}

while [ -n "$1" ]
do
    f "$1" &
    shift
done

wait

Dieser in Form einenes Shellskriptes implementierte Algorithmus nutzt, dabei die Sleep-Funktion zur Sortierung der eingegebenen Zahlen. Das bedeutet um so größer die Zahl um so länger wartet der Sleepbefehl. Damit werden alle Zahlen in ihre richtige Reihenfolge gebracht. Das bedeutet natürlich auch, um so höher die Zahlen um so länger dauert das ganze.

Auf Shellshock testen

Möchte man Testen ob man vom Shellshock-Fehler betroffen ist, gibt man auf der Konsole folgendes ein:

env x="() { :;} ; echo Anfällig für Shellshock" /bin/sh -c "echo Shellshock-Test"

Wenn man betroffen ist gibt diese Kommandozeile:

Anfällig für Shellshock
Shellshock-Test

aus. Ist man nicht betroffen erhält man folgende Ausgabe:

Shellshock-Test

Versuche Shellshock von Außen zu nutzen kann man feststellen indem man seine Logdateien nach diesem Beispiel:

cat logfile.log | grep };

abgrast. Bei einem Webserver Log könnte das ganze dann z.B. so aussehen:

192.168.1.15 - - [27/Sep/2014:19:32:19 +0200] "GET / HTTP/1.1" 200 18804 "-" "() { foo;};echo;/bin/cat /etc/passwd"

Alternativ kann man ein Skript nutzen, welches von einem Golem Autor erstellt wurde. Der Quelltext für das Skript ist dabei auf GitHub zu finden.

testssl.sh

Einen Server auf seine SSL-Fähigkeiten zu überprüfen ist für den Laien nicht ohne weiteres möglich. Durch das Bash-Skript testssl.sh sieht dies nun anders aus.

testssl.sh in Aktion

testssl.sh in Aktion

Das freie, unter der GPL2 lizenzierte Skript, dient dazu die Sicherheit der SSL-Implementation eines entfernten Servers zu testen. Die Syntax für den Test ist dabei einfach gehalten:

./testssl.sh example.com

Daneben verfügt “testssl.sh” über weitere Optionen, wie man der Dokumentation entnehmen kann. Dem Autor des Skriptes kann auf Twitter gefolgt werden.

MySQL Datenbanken einzeln sichern

Möchte man mittels “mysqldump” die einzelnen Datenbanken einer MySQL-Installation sicheren, so sähe das so für eine Datenbank in etwa so aus:

mysqldump -u root -p<passwort> --result-file=example.sql --databases example

Packt man das nun ein Skript, muss jede Tabelle von Hand in dieses Skript eintragen werden. Allerdings könnte man das ganze auch über den SQL Befehl “SHOW DATABASES” lösen und das ganze in ein automatisches Skript gießen. Auf der Webseite dev.mensfeld.pl findet man ein solches Skript. Ich habe das ganze kleineren Modifikationen unterzogen (so wird z.B. die “performance_schema” Tabelle nicht mitgesichert) und auf GitHub zur Verfügung gestellt.