Anwendungen

inotifywait bricht bei Dateiänderungen ab

06. Februar 2021 · Anwendungen · andreas · Kein Kommentar

Es gibt verschiedene Strategien, wie die Änderung einer Datei gespeichert werden kann. Die beiden i.d.R. eingesetzten Verfahren sind entweder die vorhandene Datei mit dem neuen Inhalt zu überschreiben oder aber den geänderten Inhalt in eine neue Datei zu speichern und dann die Dateien auszutauschen.

Unter Sicherheitsaspekten ist der Dateiaustausch klar vorzuziehen, denn erst wenn der neue Inhalt erfolgreich in die neue Datei gespeichert wurde, wird die bisherige Datei gelöscht. Beim direkten Überschreiben kann entweder beim Zugriff durch andere Programme eine halbfertige Datei geliefert werden oder es kommt durch Hardware- / Software-Fehler zu einer Situation, in welcher der alte Inhalt bereits zerstört, der neue Inhalt aber nicht erfolgreich geschrieben werden kann.

Dies hat Auswirkungen auf die Möglichkeiten, mittels inotifywait auf Dateiänderungen zu reagieren. Während beim direkten Überschreiben inotifywait ordnungsgemäß eine Änderung der Datei registriert, bricht inotifywait beim Dateiaustausch ab - die z.B. im Beitrag “Sass ohne Ruby” geschilderte Vorgehensweise scheitert dann, da die ursprünglich überwachte Datei ja nicht mehr existiert.

$ while inotifywait -e close_write style.scss; do sassc --style compact style.scss style.css ; done

Eine Möglichkeit, dies zum umgehen, ist das Überwachen des kompletten Verzeichnisses mit Abfrage der geänderten Datei

inotifywait -e close_write,moved_to,create -m . | while read -r directory events filename; do if [ "$filename" = "style.scss" ]; then sassc --style compact style.scss .style.css fi done

was aber - je nach Anzahl der im Verzeichnis vorhandenen Dateien und deren Änderungshäufigkeit - zu einer erhöhten Systemlast führen kann.


WSUS-Updates remote genehmigen

02. Februar 2021 · Anwendungen · andreas · Kein Kommentar

Soll das Skript, welches die WSUS-Updates genehmigt (oder ablehnt) nicht auf dem WSUS-Server selbst sondern auf einem anderen Server ausgeführt werden, scheitert dies zunächst mit der Fehlermeldung

Der Typ [Microsoft.UpdateServices.Administration.AdminProxy] wurde nicht gefunden.

Grund ist das Fehlen der benötigten Powershell-Cmdlets, welche zur Ausführung installiert werden müssen. Eine Suche im Internet führt meist in die falsche Richtung, nämlich zu Installationsanleitungen für die WSUS 3.0 SP2 Administration Console, welche aber für den unter Server 2019 verwendeten WSUS schon ein paar Tage zu alt ist.

Die benötigten Module lassen sich über den “Assistent zum Hinzufügen von Rollen und Features” installieren, hier ist unter “Features” der Punkt “Remoteserver-Verwaltungstools” / “Rollenverwaltungstools” / “Windows Server Upgrade Service-Tools” / “API- und PowerShell-Cmdlets” zu wählen.

Als letztes muß in dem Skript nur noch eine Zeile zum Zugriff auf den Remote-Server angepasst werden:

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($serverName, $useSecureConnection, $portNumber)

Der Aufruf der Funktion “getUpdateServer” wird um die drei selbsterklärenden Parameter “$serverName”, “$useSecureConnection” sowie “$portNumber” erweitert.


Virtualisierung unter Debian

28. Januar 2021 · Anwendungen · andreas · 1 Kommentar

Wird auf Windows-Clients oft VirtualBox als Desktop-Virtualisierungslösung eigesetzt, stellt man nach dem Wechsel auf Debian fest, daß VirtualBox seit Buster nicht mehr in den Paketquellen enthalten ist.

Das Debian-Wiki empfieht als Ersatzlösung das auf QEMU/KVM basierende Paket virt-manager, welches in den “normalen” Paketquellen enthalten ist und somit einfach installiert werden kann:

$ sudo apt install virt-manager

Nach dem ersten Aufruf poppt erst einmal ein Fenster “System policy prevents management of local virtualized systems” zur Eingabe des Kennwortes hoch. Wer dies vermeiden möchte, kann seinen Benutzer der Gruppe “libvirt” hinzufügen:

$ sudo usermod -aG libvirt $(whoami)

Anschließend kann eine virtuelle Maschine aufgesetzt (und verwendet) werden.

Weiterlesen


Hinweis auf veraltete Beiträge

22. Januar 2021 · Anwendungen · andreas · Kein Kommentar

Problematisch bei Beiträgen zu Technik ist, daß sie meist ein Verfallsdatum haben. Was heute prima funktionert, kann bereits in der nächsten Softwareversion entweder an ganz anderer Stelle versteckt sein oder wurde komplett gestichen. So häufen sich auch hier im Blog die Kommentare von Lesern, die übersehen, daß ein mit “Windows 7” gekennzeichneter Beitrag unter Windows 10 wohl nur noch durch Zufall so nachvollziehbar sein wird.

Aus diesem Grund wird nach und nach in älteren Beiträgen ein entsprechender Hinweistext eingebaut. Um nicht die Beitragstexte selbst ändern zu müssen, wird dies über ein paar Zeilen Code in der “functions.php” realisiert:

function outdated_notification($content) { global $post; if (is_single()) { $isOutdated = get_post_meta(get_the_ID(), 'veraltet', true); if ($isOutdated) { $content = '<p class="outdated_notification">Der Inhalt ist veraltet!</p>' . $content; } } return $content; } add_filter('the_content', 'outdated_notification');

Der Code richtet einen Wordpress-Filter ein, der jedesmal, wenn der Inhalt eines Beitrags über die Funktion “the_content” angefragt wird, den Beitragsinhalt vor Verwendung durch die Funktion “outdated_notification” schickt.

Diese prüft zuerst, ob es sich um eine Einzeldarstellung des Beitrags handelt (“is_single()”) und im Erfolgsfall, ob für den Beitrag das Feld “veraltet” gesetzt wurde. Ist dies der Fall, wird ein HTML-Paragraph mit einem Hinweistext vor den Beginn des eigentlichen Beitragsinhalts gestellt.

Der oben skizzierte Code funktionert allerdings nur, solange der Inhalt über die Funktion “the_content” angefragt wird. Wird vom gewählten Thema hingegen die Funktion “get_the_content” verwendet, ist etwas mehr Bastelarbeit notwendig, denn hier sind keine Filter vorgesehen.


Adobe Photoshop CS5 unter Debian Buster

20. August 2020 · Anwendungen · andreas · Kein Kommentar

Auch wenn GIMP inzwischen zu einem brauchbaren Werkzeug geworden ist, ist Adobe Photoshop in vielen Disziplinen noch immer ungeschlagen. Leider ist keine native Linux-Version erhältlich und die Installation mittels Wine gestaltet sich mitunter zickig.

Der hier seit vielen Jahren im Einsatz befindliche Adobe Photoshop CS5 ließ sich aber - mit einigen Einschränkungen - trotzdem zu einer Installation überreden.

Weiterlesen