Update-Skript für elementaryOS

Unter elementaryOS nutze ich neben der integrierten Paketverwaltung unter anderem auch Snappy und Flatpak. Es ist zwar unschön das sich die zentrale Paketverwaltung dadurch etwas zersplittert, aber leider existieren nicht alle benötigen Pakete in der Paketverwaltung. Bedingt dadurch fand ich den Update-Prozess allerdings etwas umständlich, sodass ich das Ganze in ein kleines Skript gegossen habe:

#!/bin/bash
apt autoremove -y && apt autoclean -y && apt update -y && apt dist-upgrade -y && apt autoremove -y && apt autoclean -y
flatpak update -y
snap refresh 
checkrestart

Mit dem Skript wird die zentrale Paketverwaltung aktualisiert, anschließend Snappy und dann Flatpak. Für die Nutzung des Kommandos checkrestart muss das Paket debian-goodies installiert werden.

Dateien automatisch einzeln einem Git-Repository hinzufügen

Manchmal gibt es sehr spezielle Anforderungen, bei denen sich keine vorgefertigte Lösung findet. In meinem Fall war es die Anforderung eine Menge an Dateien jeweils einzeln einem Git-Repository hinzuzufügen. Herausgekommen ist ein kleines Bash-Skript:

#!/bin/bash

IFS=$'\n'; set -f

for f in $(find . -not -path '*/\.*' -type f); 
do 

  echo "$f";
  git add "$f"
  git commit -m "Add file $f"
  
done

unset IFS; set +f

Das Skript wird im entsprechenden Pfad hinterlegt und sucht anschließend nach allen Dateien, inklusive Unterordnern. Jede gefundene Datei wird anschließend einzeln dem Git-Repository hinzugefügt und anschließend ein Commit für diese Datei erzeugt.

itch.io-Bundle-Spiele automatisiert in die Bibliothek einbinden

Auf itch.io werden unter anderem Indy-Spiele angeboten und verkauft. Vor kurzem wurde auf der Plattform das Bundle Bundle for Racial Justice and Equality verkauft. In diesem Bundle waren über eintausend Spiele enthalten. Diese Spiele tauchen allerdings nicht automatisch in der Bibliothek auf, stattdessen müssen sie auf der separaten Bundle-Seite aufgerufen werden und erscheinen erst dann in der Bibliothek.

Die Einstellungsseite des ScriptAutoRunner

Diesen Prozess von Hand für alle Spiele durchzuführen ist etwas aufwändiger, allerdings kann der Prozess mit einer Chrome-Erweiterung automatisiert werden.

Nachdem der ScriptAutoRunner erfolgreich als Erweiterung installiert wurde, können die Optionen der Erweiterungen über die Extension-Verwaltung und die Erweiterungsoptionen der Erweiterung geöffnet werden. Alternativ kann einfach die direkte URL im Chrome eingegeben und aufgerufen werden:

chrome-extension://gpgjofmpmjjopcogjgdldidobhmjmdbm/options.html

Dort muss nun ein neues Skript angelegt und mit folgendem Inhalt befüllt werden:

if (!window.location.toString().includes("/bundle/download")) { 
  window.history.back(); 
} else if ($('[value="claim"]') && $('[value="claim"]')[0]) {
  $('[value="claim"]')[0].click();
} else {
    $('.next_page')[0].click()
}

Nachdem das Skript wie auf dem Bild aktiviert wurde, kann die URL des Bundles aufgerufen werden und der entsprechende Prozess beginnt. Innerhalb von einigen Minuten werden alle Detailseiten der jeweiligen Spiele aktiviert und diesen landen in der Bibliothek des eigenen itch.io-Kontos. Im Anschluss kann das entsprechende Skript wieder deaktiviert werden.

Dump einer MediaWiki-Installation erstellen

Wer eine Wiki mit der freien Software MediaWiki betreibt und einen Dump derselben erstellen möchte, kann hierfür eines der Werkzeuge nutzen, welches bereits mit der MediaWiki-Installation mitgeliefert wird. Im Ordner maintenance findet sich für diese Zwecke das PHP-Skript dumpBackup.php:

php dumpBackup.php --full > dump.xml

Mit dem Befehl wird die komplette Wiki, inklusive der Historie jeder Seite, gesichert und in den Dump geschrieben. Soll nur der aktuelle Stand der Wiki gesichert werden, so kann hierfür der Parameter current genutzt werden:

php dumpBackup.php --current > dump.xml

Für eine komplette Sicherung der Wiki sollte nicht nur der Dump, sondern auch der Ordner images gesichert werden.

maybe

Das Terminal ist geöffnet und ein Befehl wie:

rm -rf img*

soll abgesetzt werden. Nun stellt sich die Frage ob man diesen Befehl wirklich so ausführen möchte. Natürlich könnte es sein, das der Befehl zu weit greift, was dazu führt das man mehr löscht als einem lieb ist. Einen Ausweg aus dieser Misere bietet das in Python geschriebene Tool maybe. Installiert werden kann dieses auf der Konsole mittels:

pip install maybe

Führt man nun ein Skript mittels maybe aus:

maybe test.sh

so ermittelt maybe, welche Operationen das Skript vornehmen möchte und zeigt diese an. Nach einer Bestätigung kann der Befehl anschließend ausgeführt werden. Technisch funktioniert das ganze dabei indem der Prozess unter der Kontrolle von ptrace ausgeführt wird. Hierbei werden allerdings nur einige Systemaufrufe blockiert, so das man maybe nur mit Skripten nutzen sollte, welchen man vertraut. Der Quelltext von maybe ist auf GitHub zu finden. Lizenziert ist das Tool unter der GPL in Version 3 und damit freie Software.