- Apache, mod_evasive, iptables: Helfer-Skripte zum (zeitweisen) Blockieren von IP-Adressen
Dies sind kleine Helferskripte, (nicht nur) dafür gedacht, dass mittels mod\evasive DDoS-Attacken unterbunden werden - und zwar durch das Blockieren des Netzverkehrs nittels der Firewall, also iptables.
- Apache, PHP: htpasswd
Dieses ist eine einfache Nutzerverwaltung mit den Mitteln von htpasswd. Sie wurde geschrieben für den Apache Webserver und nutzt (abschaltbar) die verbesserte Passwort"verschlüsselung" also das Passworthashing des Apache 2.4.
- Baustellen-Webseite
Manche Firmengründer richten sich Domains bei Dienstleistern ein, die, solange dann die Webseiten nicht von den zahlenden Kunden erstellt wurden, rotzfrech Werbung darauf schalten und den Erfolg dieses Handelns nicht nur genießen, sondern auch in einer Weise überwachen (um z.B. weitgehend nutzlose Powerpoint-Projektionen aus den Abrufdaten erstellen), welche faktisch mit keiner, den Datenschutz betreffenden Regelung in Übereinstimmung zu bringen ist. Bei denen insbesondere üble Trackingsmethoden verwendet werden. Ein Beispiel für solches Handeln ist ausgerechnet der große deutsche Hoster IONOS.
- Debian, Ubuntu, Mint: Update-Skript
Update-Skript für Debian, Ubuntu, Mint und andere Debian-basierte Linux-Distributionen. Das Skript behebt u.a. das Problem, dass bei manchen Installationen die Update-Funktion mit der Meldung abbricht, dass kein Speicherplatz verfügbar sei. Die Ursache ist eigentlich simpel: Die Boot-Partition ist voll weil dort zu viele alte Kernel liegen. Das Skript sorgt dafür, dass diese auch deinstalliert werden. Zusätzlich werden auch die heruntergeladenen Pakete bereits installierter Software gelöscht, denn auch diese werden regelmäßig nicht mehr benötigt.
- Excel: VBA: Feiertage
Die Berechnung der Termine einiger Feiertage wie Pfingsten, Christi Himmelfahrt oder der Faschingstage benötigt die Berechnung des Ostersonntags, die in Excel aus nicht nachvollziehbaren Gründen nicht existiert. Eastersunday(Jahr) liefert also die Ostersonntage (Datumswert) für ein gegebenes Jahr zwischen (einschließlich) 1900 bis 8702.
- Firefox: Privatsphäre, schnellerer Start
Auch der Firefox nimmt beim Start (und während des Browsens) verbindung zu verschiedenen Servern auf und einige der Funktionen führen dazu, dass mit Javascript durch Webseitenbetreiber Funktionen genutzt werden können, welche die Privatsphäre beeintraächtigen. Darunter fallen auch Infirmationen zum geographischen Standort.
- JavaScript: htmlClasses
Wichtig: "Historisch"
- Javascript: Lokale IP (IP im lokalen Netz) im Browser anzeigen
(Funktioniert nicht mehr in aktuellen Browsern!)
- Linux (Ubuntu, Debian): Mustek 1200 ub plus driver installer
Dieses Skript installiert die Firmware (Treiber) für den Scanner Mustek USB 1200 UB Plus.
- Linux, bash: Platzsparendes nächtliches Backup
Ich habe eine speichersparende (platzsparende) Lösung für ein Backup unter Linux gesucht und war mit jeder gefundenen Lösung nicht vollständig zufrieden. Also habe ich mir selbst eins geschrieben. Dieses Skript wird per Cronjob gestartet und macht folgendes:
- Linux, PHP: System-Tools
Eine Sammlung kleiner System-Tools. Sehen Sie einfach in den Unterverzeichnissen nach was Sie brauchen können.
- Linux, Python: CPU-Frequenz und Temperatur
Dieses kleine Python-Skript zeigt die aktuelle Taktfrequenz und Temperatur an. Es kann auch per Webserver aufgerufen werden und gehört zu diesem Artikel.
- Linux, Python: Reale Mounts anzeigen
Der Befehl mount zeigt (ebenso wie wie die Datei /proc/self/mounts oder das veraltete /etc/mtab) unter aktuellen Linux-Versionen eine recht lange Liste gemounteter "Dateisysteme" an. Die ist inzwischen extrem unübersichtlich. Allerdings ist es durchaus möglich diese Liste auf "echte" Dateisystem zu begrenzen, die man mittels blkid -kanzeigen lassen kann.
- Linux, Shell(sh, bash)-Trimmen eines Strings
Wie man in einer Unix oder Linux-Shell - einfach und schnell - einen String (oder alle Zeilen einer Datei, Eingabe oder Ausgabe) trimmen kann.
- Linux-Monitor-Switch für Laptops
Das Skript ist dafür gedacht, das nach einem Anschluss des Laptops an eine „Dockingstation“ an dieser angeschlossenen Monitore und das Audio via „HDMI“ aktiviert werden (der des Laptops wird deaktiviert). Ferner wird der Bildschirmhintergrund für jeden Monitor eingestellt. Das hat mit dem Hausmitteln (unter Debian 12 mit XFCE4) nicht voll befriedigend funktioniert. Der eigentliche Verursacher scheint aber die Dockingstation zu sein, denn Linux erkennt die Monitore jedes mal als neue Geräte und versagt deshalb gründlich bei der automatischen Einrichtung. Zudem hat mein System darin versagt, bei Stromversorgung (das macht die Docking-Station halt mit) die Bildschirmsperre abzuschalten, was den noch viel mehr unerwünschten Rückfall auf den Monitor des Lapptops bewirkt(e). Das Einschalten des Präsentationsmodus verhindert das ganz einwandfrei.
- Linux: Benutzernamen, Passwörter und Homes für Kursteilnehmer
Diese beiden Skripte dienen zum Anlegen und Löschen mehrerer Benutzerkonten für Linux und MySQL/MariaDB. Es werden zufällige Passwörter mit 8 Zeichen Länge vergeben - am Ende wird eine druckbare Liste erzeugt. Diese Skripte sind nützlich für Kurse, Seminare e.t.c. und sollten nicht auf produktiven Systemen eingesetzt werden!
- Linux: block_bad_ips
Dieses Skript holt Listen "böser" IPs von blocklist.de und badips.com ab und pflegt diese in die Firewall ein.
- Linux: ccless
Das Bash-Script ccless ergänzt das Programm ccat um eine sichere Alternative zur Anzeige einer verschlüssellten Datei innerhalb von less. Vorteil ist, dass anders als bei ccat die entschlüsselten Daten nach dem Lesen nicht wieder durch Hochscrollen im Terminal sichtbar gemacht werden können, weil der Befehl clear diese Ausgaben eben nicht löscht.
- Linux: Convertibles: Bildschirm drehen
Mit diesem, auf der Arbeit von Ruben Barkow basierenden Skript
- Linux: Copy_And_Rename
Dieses Skript habe ich gebraucht um meine Urlaubsbilder von verschiedenen Quellen und besonders von mehreren Speicherkarten zu kopieren, da die Kamera wieder bei "DCIM000001.JPG" angefangen hat.
- Linux: LetsEncrypt und certbot: Zertifikate auf sinnvolle Weise mit Bash-Skript und Crontab erneuern
Dpe Gültigkeit der LetsEncrypt-Zertifikate beträgt ausgerechnet 90 Tage. Mir ist aufgefallen, dass es „nicht wirklich“ möglich ist einen braucbaren Crontab-Eintrag zu konstruieren mit dem man sich an diese 90-Tage-Frist halten kann.
- Linux: myDos2Unix
Das Skript bereinigt Zeilenden um das "carriage return", welches Windows-Editoren (oder allgemein: falsch eingestellte Editoren) an die Zeilen anhängen - weshalb dann mit diesen geschriebene Unix- bzw. Linux-Skripte nicht lauffähig sind.
- Linux: Netzwerk für Seminare
- Linux: newMachine
- Linux: new ssh-hostkeys
Dieses Skript generiert neue SSH-Hostkeys. Notwendig ist dieses, wenn z.B. ein Image einer (virtuellen oder realen) Maschine kopiert wurde. Für Linux, BSD und viele Unixoide.
- Linux: ubuntu-for-raspberry-installer
Installer für Ubuntu-Server auf Rasberry PI 2B
- Linux: USB-Stick testen
Dieses Skript testet USB-Sticks darauf, ob diese defekt oder Fälschungen sind.
- Meine Ebooks
Von mir geschriebene Ebooks zu verschiedenen Themen.
- Missbräuchliche Anmeldungen blockieren
Die Klasse „abuser“ ist dafür gedacht und geeignet, bekannte Namen bzw. Merkmale von BDSG-Abmahmern wie "Pascal G." aus D. in einer "Einwegverschlüsselung" zu speichern (also gerade nicht als seine „personenbezogene Daten“) und z.B. bei einer Anmeldung für Newslettern gegen diese "Hashes" zu prüfen. Die Dateien
- Passwort-Cracklist
Password-Cracklist / Passwort-Cracklist
- PHP, Bash: Template-Übersetzer
Manchmal ist es gewünscht, dass andere Mitarbeiter als der Programmierer Templates (Vorlagen) für PHP-Skripte "bauen". Das ist auch sinnvoll, denn es gibt "Frontender" (das sind die, welche z.B. die eigentlichen Webseiten bauen) und "Backender" (das sind die, welche die Logik hinter den Webseiten - z.B. Berechnungen oder Datenbankabfragen programmieren).
- PHP, JavaScript: Netzlast-Ticker
Als "kleine Fingerübung" habe ich einen Netzlast-Ticker programmiert. Zu "bewundern" ist dieser
- PHP73to74
Dieses Skript schreibt PHP-Skripte um. Es behebt die folgende Fehlermeldung in PHP 7.4:
- PHP: Caching für Webprojekte
Für viele Webprojekte mit "quasistatischem" Inhalt bietet es sich an, die Ausgaben zu cachen, also zwischenzuspeichern. Die Vorteile sind:
- PHP: check_blocked_ip
Dieses sind Werkzeuge mit dem Zweck zu ermitteln ob eine IP-Adresse (bereits) mit iptables geblockt wird.
- PHP: class Dir2Array
Scannt ein Verzeichnis und gibt ein Array mit Informationen über darin befindliche Items zurück.
- PHP: Data-URL-Generator
Der Data-URL-Generator generiert aus binären Grafiken base-64 codierten Text, der sich in Webseiten (HTML oder CSS) oder Mails einfügen lässt.
- PHP: Debug2JsConsole
Die Funktion Debug2JsConsole ist dafür bestimmt, beim Debuggen von PHP-Programmen den Inhalt von PHP-Variablen (auch Arrays und Hashes), PHP-Objekten oder die Eigenschaften von Objekten sowie der MAGIC-VARS von PHP in der Javascript-Konsole auszugeben.
- PHP: Erweiterte PDO-Klasse für den Zugriff auf sqlite-Datenbanken
Die Verwendung von PDO mit dem sqlite 2/3-Treiber erfordert bei allen schreibenden Zugriffen auf die Datenbank, dass die sqlite 2/3-Datei selbst, aber ebenso das Verzeichnis, in welchem diese liegt, vom aktuellen Benutzer (oft: "www-data") beschreibbar ist. Falls nicht erscheit erst bei Versuch eines INSERT, UPDATE oder DELETE folgender Fehler im error.log:
- PHP: executeAlone
Diese PHP-Skripte zeigen in Form einer Demonstration eine Möglichkeit, wie man (zu lang laufende!) PHP-Skripte im Browser, also über den Webserver so startet, dass diese danach unabhängig vom Webserver und also unabhängig von einer Verbindung zum Browser laufen. Die Skripte sind lauffähig (getestet) - machen aber wahrscheinlich nicht das, was Sie wollen. Sie müssen also die von Ihnen geünschten Funktionen selbst programmieren.
- PHP: FastDeliver
FastDeliver ist ein Skript zum schnellen Ausliefern statischer(!) Inhalte mit PHP (Alle Arten von Text, also auch HTML, CSS, Javascript, JSON, SVG, ...). Von den originalen Dateien wird durch das Skript selbst eine gezippte Version als Cache abgelegt und deren Aktualität überprüft. Die gezippten Dateien müssen also nicht manuell erzeugt oder aktualisiert werden.
- PHP: Feiertage
Mit diesem Tool kann man zu einem gegebenen Datum (derzeit nur die deutschen) Feier- und "Gedenktage" ermitteln.
- PHP: ftxCaptcha
Captchas sind manchmal notwendig, oft ein Ärgernis. Das hier als PHP-Objekt realisierte Captcha lässt die Benutzer eine recht einfache Rechenaufgabe lösen.
- PHP: Input-Spekulator für Zahlen und Währungen
Das Skript liefert eine Klasse und Funktion Is4NaC, die (je nach Belieben des Anwenders) dazu dienen, durch Benutzer eingegebene Werte darauf zu untersuchen, ob diese Zahlen erhalten.
- PHP: Insite-Navigation-Generator
Diese Klasse dient dazu, für HTML-Dokumente mit Überschriften eine Navigation im Listenformat zu erstellen. Diese Navigation kann auch direkt eingebunden oder einzeln abgerufen werden.
- PHP: internationalisierte Zeitangaben ohne strftime oder Intl-Extension
In PHP 8.1 wird strftime() als „deprecated“ gemeldet, in PHP 9.0 wird es die Funktion nicht mehr geben, die u.a. internationalisierte Zeitangaben (Wochentage, Monatsnamen) ermöglichte. Falls die Intl-Funktionen nicht verwendet werden können, kann sich behelfen in dem man die Daten benutzt, die mit einem kleinen Trick auf einem Linux-System mit installiertem Paket „locales-all“ abrufbar sind.
- PHP: LanguageSelector
Die Sprachwahl ist ein häufig angesprochenes Problem.
- PHP: libError404
Ein kleines PHP-Skript welches das 'Faken' einer 404er Fehlermeldung erlaubt.
- PHP: libGetBreadcrumb
Kleine Funktion zum Erzeugen einer Brotkrümelmavigation. Diese wird auch hier verwendet, z.B. in der Dateiansicht.
- PHP: login-system
Ein "kleines" sessionbasiertes Login-System für PHP ab 7.1. Benutzt keine Datenbank, sondern versteckte Dateien und unterstützt Gruppen. Passwörter werden nunmehr ausschließlich mit den korrekten PHP-Funktionen gehacht.
- PHP: md_trim, md_ltrim, md_rtrim
Die PHP-Funktionen trim(), ltrim() und rtrim() können leider nicht mit Multibytestrings umgehen. Das macht, wenn spezielle Zeichen gelöscht werden sollen, deren Ersatz notwendig.
- PHP: password-hash-generator
Dieses Skript dient dazu, die Hashes vergessener Passwörter in verschiedenen Szenarios ersetzen zu können. Ich habe es geschrieben, weil ich eine der Funktionen brauchte um ein Default-Passwort für ein Setup-Skript zu setzen und dabei gleich "ein wenig mehr" gemacht. Es ist "nicht in allen Punkten schön", funktioniert aber.
- PHP: randomString
PHP-Funktion: Erstellt einen zufälligen String.
- PHP: Replacement für phpinfo()
Ein Ersatz für die Funktion phpinfo(), welche nicht auf allen Servern verfügbar ist.
- PHP: ReversesExplode
Diese kleine PHP-Funktion splittet Strings. Anders als explode() liefert diese aber einen umgekehrten Array. Zu dem kann der Faktor auch negativ sein. Ich habe es für meine Netztools benötigt.
- PHP: Skript reparieren
Ein PHP-Skript, welches PHP-Skripte repariert
- PHP: Spam-Erkennung für Mail- und Kontaktformulare
Diese einfache Spamerkennung für Kontakt- und Mailformulare ist bei mir seit Jahren erfolgreich im Einsatz und „tut, was sie soll“.
- PHP: Umrechnung zwischen Zahlensystemen
Bibliotheken (Klassen) zum Umrechnen von positiven Integer-Zahlen zwischen verschiedenen, (exakter: völlig beliebigen) Zahlensystemen, dem lateinischen Zahlensystem oder zum Umformen von großen Zahlen zu menschenlesbaren Zahlen.
- PHP: use_strict
Manchem Programmierer wird manches Verhalten von PHP nicht immer gefallen. Ich meine darunter könnte Folgendes fallen:
- PHP: UUID_v4
Ein Tool, welches geeignet ist um in PHP UUIDs zu erstellen und (formal) zu testen. Es handelt sich um UUIDs gemäß RFC rfc4122, vom Juli 2005, Sektion 4.4.: 'Algorithms for Creating a UUID from Truly Random or Pseudo-Random Numbers', also um solche, die aus Zufallswerten gebildet werden.
- PHP: WebScan
Um meinen Scanner ohne "Umstöpseln" auch von einem Laptop aus nutzen zu können habe ich mir diese Lösung programmiert. Momentan scannt diese nur eine Seite - bei einem Scanserver macht es auch wenig Sinn mehr als eine Seite zu scannen und einen Einzugsscanner habe ich nicht. (Falls mir jemand einen funktionierenden Einzugscanner spendieren will kann ich auch in der Richtung weiterentwickeln.)
- PHP: Zeitangaben normalisieren
Die Funktion TimeNormalizer ist dazu bestimmt, freie Angaben einer zeitlichen Dauer in Sekunden umzurechnen.
- roger-router-restart
- Ubuntu, btrfs, apt: Löschen alter Snapshots
Unter Ubuntu 16.04 (eventuell auch Debian, Mint und andere Äbkömmlinge) habe ich feststellen müssen, dass beim Ausführen von Installationen oder Updates mit apt bzw. apt-get jedes mal ein btrfs-Snapshot des Root-Dateisystems angegefertigt wird. Das mag (weil man jederzeit einen bestimmten Stand wieder herstellen kann) ideal sein, z.B. wenn man sich ein texlive-System aufsetzt - benötigt aber leider auch viel Speicher. Nach längerer Zeit und auf Systemen auf denen mit apt (meinetwegen auch den zugehörigen grafischen Oberflächen wie synaptic viel (de-)installiert wird ist irgendwann ist die Platte voll. Insbesondere wenn man als Systempartition eine ssd verwendet.
- Ubuntu, Debian, Apt: set-apt-proxy
Da ich einige Notebooks und viele virtuelle Maschinen zu pflegen habe will ich natürlich, dass diese Updates nicht aus dem Internet sondern von eoinem lokalen Proxy beziehen.
- Ubuntu: Updatemanager: Neustart abschalten
Der Ubuntu-Updatemanger verlangt nach einem Update des Kernels nach einem Neustart. Verweigert man diesen zunächst und bootet später das System neu so verlangt einige Minuten nach dem bereits erfolgten Neustart der Ubuntu-Updatemanger erneut nach dem Neustart. Das nervt.
- Ubuntu: Zurückbehaltene Pakete
Führt man in Ubuntu Updates im Terminal aus erscheinen aktuell Meldungen über zurückgegehaltene Pakete, die als Fehlermeldungen wahr genommen werden - es sind aber nur Notizen, nicht einmal Warnungen.
- Windows, Linux: Multiboot: Uhrzeit verstellt
Wenn man ein Multibootsystem mit Windows und Linux betreibt, dann erwartet Windows in der Voreinstellung, dass die Computeruhr (Hardware) in der Zeitzone läuft, die auch bei Setup für das System eingestellt wurde. Das ist schon im Hinblick auf Sommer- und Winterzeit - mikrosofttypischer - Blödsinn. In Multiobootsystemen mit Linux geht dann erst ein mal die Uhr falsch.