Ein Lockfile im Shell-Script

Gute Vorschläge und Ideen um Lock-Files in einem Shell-Script zu verwenden, gibt es wie Sand am Meer.

Es gehen – mittlerweile seit Jahren – tiefgreifenden Diskussionen einher, welche Variante nun die Sicherste ist und welche Scripts Race-Conditions haben.

Meine persönliche Variante, die sicherlich nicht im Millisekunden-Bereich stabil ist, ist die folgende:

Über die erste Zeile hole ich mir einen Lockfilenamen in /tmp der den Namen des Scripts+“.lock“ hat.

Das kill -0 prüft schlicht, ob der Prozess der das „Lock“ hat, auch tatsächlich noch läuft.

Trap sichert noch ab, daß, außer bei einem kill -9, das Lockfile auch gelöscht wird 🙂

IPTables Alias für das .profile

Das Arbeiten unter Unix/Linux kann mitunter nervig sein, wenn man Befehle immer wiederholen muß.
Daher bieten sich alias an, die man einfach in sein .profle, oder unter bash halt ins .bash_profile, schreibt.

Bei der täglichen Spielerei mit meinen geliebten chinesischen Hackern, also der Entwicklung des Scripts aus Teil 2, waren drei alias Befehle mehr als hilfreich, die ich hier auch nicht vorenthalten möchte.

 

Anzeige welche IPs jetzt in der Blockliste stehen

Da mein Script alle 5 Minuten recht rigoros IPs auf die dynamische Blockliste setzt hab ich mich für den alias iptl entschieden, der mir sämtliche IPs anzeigt, die auf der Blockliste stehen:

Das ist nun kein Hexenwerk, erleichert die Arbeit aber ungemein 🙂

Für den Anfang recht cool, aber, daß muß ich zu meiner Schande gestehen, ab einer gewissen Anzahl von Einträgen in der dynamisch geblockten Liste, wird es schnell unübersichtlich.

Also hab ich mir gedacht, daß es doch noch recht schick wäre, wenn man nur die IPs angezeigt, die auch tatsächlich aktiv Pakete schicken.
Der Alias dafür ist iptld :

Und schon werden via iptld nur noch die „aktiven IPs“ angezeigt 🙂

 

Ein kleiner IPTables Echtzeitmonitor

IPTables in Echtzeit via alias zu monitoren ist auch eine nette Möglichkeit seinen Server im Auge zu behalten.
Daher nun ein kleiner IPTables-Monitor als alias: