Kategori Sprachen

systemd KillMode und systemd-run

Sonntag, Oktober 8th, 2017

Für eine Video Projekt habe ich ein Script das in einer Schleife ein Einminütiges Video erstellt und dieses danach verarbeitet. Damit man die Erstellung sauber beenden kann, habe ich beim Starten eine Datei angelegt und zum beenden wird diese Datei wieder gelöscht. In der schleife wird immer abgefragt ob diese noch Existiert:

So kann man das Skript sehr gut von „außen“ steuern. Ein weiteres Script zum verarbeiten, das sich ebenfalls in der schleife befindet, habe ich geforkt.

Nun habe ich das Script auf einen systemd Service umgestellt, bei dem ich auf zwei Probleme gestosen bin.
1. Systemd beendet das Script und alle hiervon aufgerufenen Programme ebenfalls mit Signal 15. Das bedeutet das, dass Video erstellen und verarbeiten umgehend unterbrochen werden.
2. Das „verarbeitung.sh“ Script ist eigentlich vollkommen unabhängig und es muss nicht auf dessen Beendigung gewartet werden.

Lösung:
Im SystemD Services habe ich den Kill Mode auf Mixed umgestellt. Das Sendet nur noch an eigentliche Script ein Signal 15. Hier tiggert dann der trap und löscht die Datei zum Beenden der Schleife.

Den fork habe ich mit mit systemd-run in eine eigene Unit verfrachtet. Somit kann die Verarbeitung abgeschlossen werden und SystemD kann den Dienst als beendet erklären.

dhclient debug modus

Donnerstag, Juni 2nd, 2016

Einen debug modus für dhclient habe ich leider vergeblich gesucht. Es gab weder ein simulate noch ein oder „–dry-run“ womit ich eine Adressermittlung und was es genau machen würde. Da es sich bei den von dhclient aufgerufenen Scripten um Bash scripte handelt, habe ich diese kurzerhand umgeschrieben.

Unter /sbin/dhclient-script liegt das Script das das von dhclient nach erfolgreicher Adressermittlung aufgerufen wird. Hier habe ich alle aktiven iproute2 Kommandos gegen echo’s ersetzt und alle hooks endfernt. Im Beispiel eines Bridgeinterface für eine Freifunk Verbindung sah das so aus:

Das vollständig umgeschriebene dhclient-script das ich auf einen Ubuntu 12.04 angepasst habe, habe ich hier: (mehr …)

WordPress Angriffe filtern

Montag, November 30th, 2015

Ich habe im August 2014 bereits eine Lösung mit iptables und fail2ban geschrieben. Da diese aber zu viele „fals positiv“ produziert hat, habe ich mich noch einmal hingesetzt und eine sowohl auf Performance als auch ohne fail2ban optimierte Lösung gesucht.

Mein zweiter Ansatz geht so vor, dass zuerst alle post requests in eine eigene iptbatles chain gepackt werden. Anschließen werden die in der chain noch übrig bleibenden anfragen nach den Schlüsselwörtern wie wp-login.php oder xmlrpc.php untersucht und mit einem Counter von 3 versehen. Beim dritten versuch ein falsches Passwort anzugeben werden die IPs der Botts für 600sec gesperrt.

UPDATE: Danke an Jens, die SSL Regeln für Port 443 können so natürlich nicht funktionieren und wurden entfernt.

SimpleHTTPServer mit PHP

Dienstag, August 4th, 2015

Heute wollte ich mir mal eben schnell Vorschaubilder auf einem Server anzeigen lassen. Der PHP Code war schnell geschrieben:

Dann die Frage wie man ohne Webserever an die Daten harren kommt. Einfachste weg ist der in Python integrere Webserver:
python -m SimpleHTTPServer 8000

Diese kann aber kein PHP. Da php5-cli in der Version >= 5.4 installiert war funktionierte folgende spannende Lösung:
php -S 127.0.0.1:8000 -t .

Quelle: docs.python.org simplehttpserver, php.net commandline.webserver

PHP7 ein Test wert…

Samstag, Juli 18th, 2015

Aktuell ist die Beta1 von PHP7 veröffentlicht. Da Sie zum php5.2 abwärts kompatible ist funktioniert auch das meiste. Auf unterschiedlichen Seiten kann man sich jetzt schon Statistiken über den Speicher und CPU verbrauch anschauen, welche tatsächlich beeindruckend sind.
Wo es natürlich knallt ist die Kompatibilität zu php4 so sind mir folgende beiden Problem bereits untergekommen:

$var =& new $ojeckt()
Geht nicht da kann man das & einfach streichen. Dies war für php4 zwingen erforderlich und war schon im 5 nur noch abwärts kompatible.

split muss nun durch explode ersetzt werden. Dies gilt seit PHP 5.3.0 als DEPRECATED.

Weitere Tests folgen…