Windows: Start-Skript einrichten

Wer unter Windows ein Start-Skript einrichtet, kann Aufgaben wie das Pullen von Git-Repositorys und das Starten von Programmen schön automatisieren.

Aufgaben kann man mit der Windows Aufgabenplanung planen. Diese wird über Start -> Suche nach „Aufgabenplanung“ auch schnell gefunden.

Eine neue Aufgabe kann über „Einfache Aufgabe erstellen …“ ganz einfach angelegt werden.

Zur besseren Übersicht sollte man der neuen Aufgabe natürlich einen Namen geben. „Startup“ wäre eine Option …

Anschließend gibt es verschiedene Optionen, wann die Aufgabe ausgeführt werden soll. „Beim Anmelden“ führt die Aufgabe nach der Anmeldung eines Benutzers aus.

Natürlich muss man angeben, was genau durchgeführt werden soll. „Programm starten“ ist hier allerdings die einzige Möglichkeit, welche nicht veraltet ist.

Da ich ein Batch-Skript geschrieben habe (eine Anleitung, wie man ein Batch-Skript schreibt, kann man mit einer gezielten Suche schnell finden), wähle ich dieses natürlich aus.

Kurz vor dem Ende können wir unsere Auswahl noch einmal begutachten.

Fertig. Die Aufgabe wurde erstellt und sollte bei allen zukünftigen Anmeldungen ausgeführt werden können.

Xfce: Start-Skript einrichten

Ein Start-Skript nach dem Anmelden eines Benutzers kann bestimmte Aufgaben wie z.B.: das Pullen von einem Git Repository oder das Öffnen von Anwendungen gleich beim Start ausführen.

Da ich mir unter Xfce ein solches Skript eingerichtet habe, möchte ich nun zeigen, wie das funktioniert. Als Beispielsystem werde ich Xfce unter Manjaro Linux verwenden.

Zuerst sollte man natürlich sein Skript (z.B.: als Bash-Skript) schreiben. Hierauf gehe ich allerdings in diesem Artikel nicht genauer ein. Seiten wie „ubuntuusers“ bieten dazu genügend gute Anleitungen.

Anschließend kann man über die Xfce-Einstellungen den Punkt „Sitzung- und Startverhalten“ auswählen.

Über „Automatisch gestartete Anwendungen“ kann man mit dem Button „Hinzufügen“ auch eine neue Startanwendung in die Liste aufnehmen.

Das anschließende Fenster möchte mit einem verständlichen Namen und dem Pfad zu unserem Skript gefüllt werden.

Nun sollte das Skript immer nach der Anmeldung automatisch ausgeführt werden.

Automatische Gitea Updates

Bereits im Januar dieses Jahres habe ich über meine Erfahrungen mit Gitea Updates berichtet. Das große Problem von Gitea ist, dass es sich nicht automatisch selbst aktualisiert. Ein Issue für das Problem ist schon seit fast 2 Jahren offen: https://github.com/go-gitea/gitea/issues/518#issuecomment-441742904

Ich hasse es wirklich, wenn sich eine sicherheitskritische Webanwendung nicht von selbst aktualisiert – das erlaubt Hackern ein leichtes Spiel. Vor vier Monaten habe ich nun schon die Entwicklung eines automatischen Gitea Update Skripts begonnen, welches ich nun vorstellen möchte.

Hinweise vor der Benutzung

Wie ich bereits erwähnt habe, bin ich kein Fan von manuellen Updates und schreibe deshalb für viele meiner Systeme Skripts zum automatischen Aktualisieren. Diese Programme sind schnell erstellt worden und auf meine Bedürfnisse angepasst und können unsauberen Code enthalten. Ich bin allerdings für Verbesserungsvorschläge in Form von Issues und Pull-Requests offen!

Manche Entwickler – wie der Ersteller von Kanboard – haben eine grundsätzliche Skepsis gegenüber automatischen Updates. Es gibt hierfür gute Gründe – du möchtest ja sicher nicht, dass deine Anwendung plötzlich aufgrund eines fehlerhaften Upgrades nicht mehr geht – deshalb empfehle ich automatische Upgrades nur, wenn auch automatische Backups eingerichtet sind.

Das Skript

Die veröffentliche Version meines Skripts kann auf GitHub gefunden werden: https://github.com/CMiksche/gitea-auto-update

Ich habe das Skript nur für mein Debian System entwickelt und getestet. Wenn das Skript einfach so auf Windows, MacOS oder Linux Systemen ohne Systemd ausgeführt wird, können Fehler nicht vermieden werden! Für diese Systeme muss das Skript definitv angepasst werden.

Wenn das Design von Gitea angepasst wurde, kann es sein, dass ein automatisches Upgrade dieses Template zerstört. Hierauf wird im Skript nicht geprüft.

Wie man mein Skript benutzt

Bitte zuerst die oberen Absätze lesen, ohne Beachtung dieser Hinweise kann es schnell in die Hose gehen!

Die Anwendung ist recht einfach:

  • Installiere mein Skript auf dem Zielsystem:
    pip install gitea-auto-update
  • Erstelle eine settings.ini:
    [Gitea]
    site=https://your-gitea-instance.com/api/v1/version
    apiUrl=https://api.github.com/repos/go-gitea/gitea/releases/latest
    system=linux-amd64
    file=/usr/local/bin/gitea
    tmpDir=/tmp/
    buildFromSource=None
    sourceDir=/home/git/go/src/code.gitea.io/gitea
    logFile=update.log
  • Führe den Befehl gite-auto-update --settings=/path/to/settings.ini aus, um das erste Upgrade zu testen
  • Wenn die Updates regelmäßig automatisch ausgeführt werden sollen, bearbeite die /etc/crontab Datei und rufe dort einen Aufruf des Skripts aus

So einfach geht das. Wenn du auf Probleme stößt, zögere nicht einen Issue oder Pull-Request auf Github zu erstellen oder hier einen Kommentar zu hinterlassen.

Diesen Beitrag habe ich auch auf Englisch veröffentlicht.

Automatische Backups bei Shared Webhosting

Bei Shared Webhosting Angeboten ist es oft schwierig, kostenlose automatische Backups zu realisieren. Oft sind Backups sowie Cron Jobs (soweit überhaupt verfügbar) kostenpflichtig.

Zudem funktionieren viele der im Internet verfügbaren Skripts nur auf Servern und die, die auch bei Webhosting Services funktionieren, gehen manchmal nicht mehr …

Deshalb habe ich ein Skript für automatische Dateisystem & Datenbank Backups erstellt. Nachfolgend möchte ich die Funktionen sowie die Anwendung des Skriptes erläutern.

Link zum Projekt: https://git.kernel.fun/cmiksche/php-sharedhost-backup

Funktionen / Features

  • Erstellt Datenbank-Backups
  • Erstellt Dateisystem-Backups, die entweder mit ZIP oder GZ komprimiert werden können
    • Bei der Komprimierung mit ZIP können auch Verzeichnisse ausgeschlossen werden
  • Backups können nach X Tagen automatisch gelöscht werden
  • Das Skript kann von extern aufgerufen werden
  • Lizenziert unter der GNU General Public License 3.0

Anwendung

  • Zuerst sollte die Konfiguration wie Datenbankzugangsdaten in den Konstanten der backup.php Datei eingetragen werden
  • Anschließend können die Dateien auf dem Webspace hochgeladen werden
    • Sicherheitshinweise
      • Nicht das .git Verzeichnis hochladen!
      • Im Standardbackupverzeichnis „backup“ ist nur ein Schutz der Dateien unter Apache eingerichtet – unter nginx und anderen Webservern bitte selbst absichern!
  • Nun kann man einen Cron Job auf einem externen System (z.B.: heimischer Raspberry Pi) einrichten, der die backup.php Datei täglich aufruft.

Anregungen, Fehler oder Verbesserungsvorschläge?! Schreibe einen Kommentar!