ubuntuusers.de

15. Februar 2018

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

14. Februar 2018

In meinem letzten Artikel habe ich beschrieben, wie man Epoptes installieren und im Unterricht einsetzen kann. Wir verwenden an unserer Schule linuxmuster.net als Schulserver-Lösung. Eines der für mich besten Features in linuxmuster.net ist postsync. Mit Hilfe von Linbo (dem Bootmanager von linuxmuster.net) haben wir genau ein Image für alle unsere Ubuntu-Rechner und können trotzdem individuelle Anpassungen für einzelne Rechner oder ganze Räume vornehmen. Heute möchte ich deshalb beschreiben, wie man Epoptes in linuxmuster.net integriert. Für die Schüler- und Lehrerrechner müssen verschiedene Konfigurationen vorgenommen werden, doch dank postsync brauchen wir weiterhin nur ein „Master-Image“ pflegen.

Installation

Die Installation führen wir an einem Rechner, welcher mit Linbo verwaltet wird, durch. Dazu starten wir unser Ubuntu-Image (in unserem Fall Ubuntu 16.04) synchronisiert (Klick auf gelbes Symbol):

linbo-mainscreen-registered

Nach dem Starten melden wir uns als lokaler Administrator an (z.B. linuxadmin). Danach installieren wir die beiden Pakete epoptes und epoptes-client.

$ sudo apt install epoptes epoptes-client

Mehr ist an dieser Stelle erst einmal nicht zu tun, da wir die Konfiguration später vornehmen.

Vorbereitungen für neues Master-Image

Bevor wir ein neues Master-Image erstellen, müssen wir folgende Dateien auf einen USB-Stick oder gleich auf den linuxmuster.net Server kopieren und auf unserem Master-Image-PC löschen.

/etc/default/epoptes-client
/etc/default/epoptes
/etc/epoptes/server.crt
/etc/epoptes/server.key
/etc/xdg/autostart/epoptes-client.desktop
/etc/init.d/epoptes
/etc/init.d/epoptes-client
/usr/bin/epoptes
/usr/sbin/epoptes-client
/usr/share/applications/epoptes.desktop

Entweder wir verschieben die Dateien auf einen Wechselspeicher (z.B. mit sudo mv /etc/default/epoptes-client /media/linuxadmin/Wechseldatenträger/) oder per scp direkt auf den linuxmuster.net Server (siehe nächster Abschnitt).

Hinweis: Die Ordner, in denen sich die Dateien befinden, werden nicht gelöscht!

Postsync einrichten

Wir wollen nun die nötigen Einstellungen vornehmen, damit der Postsync am Ende auch die richtigen Anpassungen vornimmt. Die genaue Funktionsweise des Postsync-Features ist in der offiziellen Dokumentation erklärt. Deshalb müssen wir alle unserer Anpassungen für unser Ubuntu 16.04 Image (Xenial) unterhalb von /var/linbo/linuxmusterclient/xenial/ vornehmen.

Dazu erstellen wir folgende Verzeichnis:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/share/applications/

Für unseren Lehrer-PC brauchen wir noch diese Verzeichnisse:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/share/applications/

Die Ordner können wir auf dem linuxmuster.net Server wie folgt anlegen (Raum und Lehrer-PC anpassen und für alle Ordner aus den Listen oben durchführen):

# Raum r100
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100/etc/default/
...
# Lehrer-PC r100-pc01
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Sind alle Ordner angelegt, können wir nun die Epoptes-Dateien von unserem Master-Image-PC oder von unserem USB-Stick in die richtigen Verzeichnisse kopieren. Am einfachsten geht es, wenn man den passwortlosen Zugang zum Master-Image-PC eingerichtet hat.

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir folgende Dateien kopieren (vom Master-Image-PC):

  • /etc/default/epoptes  → Rechte 644
  • /etc/epoptes/server.key → Rechte 644
  • /etc/init.d/epoptes → Rechte 755
  • /usr/bin/epoptes → Rechte 755
  • /usr/share/applications/epoptes.desktop → Rechte 644

Mit scp sieht da so aus (für alle Dateien wiederholen und Zielpfade anpassen):

$ scp root@r100-pc01:/etc/default/epoptes /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes
...

Da durch den Postsync erst alle Dateien aus dem Ordner /var/linbo/linuxmuster-client/xenial/r100/ synchronisiert werden, landen auch die Dateien des Epoptes Clients auf dem Lehrer-PC, was zu Problemen führt. Deshalb legen wir noch ein paar Dummy-Dateien an, um die Dateien des Epoptes-Clients wieder zu überschreiben:

$ cd /var/linbo/linuxmuster-client/xenial/r100-pc01/
$ touch etc/default/epoptes-client etc/xdg/autostart/epoptes-client.desktop etc/init.d/epoptes-client usr/sbin/epoptes-client

Client-Rechner (aka Schüler-PC)

Ähnlich wir zu unserem Lehrer-PC kopieren wir nun noch die Dateien für unsere Schüler-Rechner. Diese Dateien werden benötigt:

  • /etc/default/epoptes-client → Rechte 644
  • /etc/epoptes/server.crt→ Rechte 644
  • /etc/hosts → Rechte 644
  • /etc/xdg/autostart/epoptes-client.desktop → Rechte 644
  • /etc/init.d/epoptes-client → Rechte 755
  • /usr/sbin/epoptes-client → Rechte 755

Diese können wir wieder nach dem gleichen Muster wie oben per scp auf unseren Server vom Master-Image-Computer kopieren:

$ scp root@r100-pc01:/etc/default/epoptes-client /var/linbo/linuxmuster-client/xenial/r100/etc/default/ 
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
...

Nun sind alle Dateien am richtigen Ort und wir können Epoptes konfigurieren.

Epoptes konfigurien

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir nur in der Datei /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes die SOCKET_GROUP von epoptes inSOCKET_GROUP=teachers ändern.

Client-Rechner (aka Schüler-PC)

Für die Schüler-Rechner müssen wir etwas mehr konfigurieren.

  • /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
    • SERVER=r100-pc01 – hier müssen wir den Namen des Lehrer-Rechners eintragen
    • Wer Wake-On-Lan nutzen möchte, muss das Kommentarzeichen vor WOL=g entfernen.
  • /var/linbo/linuxmuster-client/xenial/r100/etc/xdg/autostart/epoptes-client.desktop
    • X-GNOME-AutoRestart=true – Damit der Epoptes-Client auch bei einem Neustart des Displayservers neustartet, müssen wir hier wieder das Kommentarzeichen entfernen, .
  • /var/linbo/linuxmuster-client/xenial/r100/etc/hosts
    • Da es manchmal Probleme mit dem Epoptes-Client trotz korrekter Namensauflösung geben kann, ergänzen wir am Ende der Datei die IP des Lehrer-PCs (IP anpassen!):
      #Server für epoptes
      10.16.5.100 r100-pc01

Image erstellen

Jetzt können wir ein neues Master-Image auf unserem Master-Image-PC erstellen. Wichtig ist, dass man vorher alle unnötigen Dateien entfernt, damit das Image nicht unnötig groß wird (z.B. alte Kerneldateien, homes der Schüler und Lehrer löschen, Chronik von Firefox / Chrome bereinigen, …). Das Tool „LMLCC“ ist an dieser Stelle sehr sehr hilfreich.

Wichtig: Unbedingt die Dateien löschen, die unter „Vorbereitungen für neues Master-Image“ aufgelistet sind!

Nach dem Neustart des Rechners können wir in Linbo ein neues Image erstellen und auf den Server hochladen.

Postsync testen

Jetzt, da wir ein neues Image haben und Epoptes konfiguriert ist, müssen wir noch testen, ob auch alles funktioniert, wie es soll. Zuerst brauchen wir das Postsync-Skript. Es sollte in der Regel schon vorhanden sein oder man kann es sich hier herunterladen und nach /var/linbo/xenial.cloop.postsync kopieren (Rechte 664).

$ wget -O /var/linbo/xenial.cloop.postsync https://raw.githubusercontent.com/linuxmuster/linuxmuster-client-servertools/master/usr/lib/linuxmuster-client-servertools/generic.postsync
$ chmod 664 /var/linbo/xenial.cloop.postsync

Nun starten wir einen beliebigen Rechner in unserem Computerraum und synchronisieren ihn mit Linbo, indem wir auf das gelbe oder rote Synchronisationssymbol klicken. Danach startet der Rechner und alles sollte fertig eingerichtet sein.

Leider sieht man in Linbo nicht direkt, ob der Postsync geklappt hat oder nicht. Wir können uns aber vom Server aus in Linbo einloggen. Dazu starten wir wieder einen Rechner aus dem Computerraum und warten bis Linbo fertig gebootet hat. Dann können wir wie folgt den Rechner synchronisieren und dabei beobachten, was passiert:

$ linbo-ssh r100-pc02
# Dann in der Linbo-Shell
$ linbo_wrapper sync:1

Die 1 steht für das 1. Betriebssystem, d.h. wenn man ein Dual-Boot System mit Windows hat und Ubuntu das zweite System ist, müssen wir den Befehl anpassen.

Falls Fehler auftreten, werden sie in der Konsole angezeigt. Vor allem sollte man erkennen können, ob der Postsync überhaupt ausgeführt wird!

Wenn alle Rechner im Computerraum synchronisiert sind, kann Epoptes benutzt werden.

Fazit

Die Integration von Epoptes in linuxmuster.net hat für uns den großen Vorteil, dass wir weiterhin nur ein Ubuntu-Image pflegen müssen, aber trotzdem einzelne Rechner unterschiedlich zu konfigurieren (auch offline!). Für mich persönlich ist dieses eines der Killer-Features von linuxmuster.net (neben der großartigen Community!) Deshalb kann ich jedem, der sich für eine freie Schulserverlösung interessiert, linuxmuster.net sehr ans Herz legen.

Problemlösung

Epoptesdienst startet nach Kernelupdate nicht mehr

Falls nach einem Kernelupdate der Epoptesdienst nicht mehr startet, hilft es Epoptes vor dem Kernelupdate zu deinstallieren mit

$ sudo apt remove --purge eopoptes

Danach alle Updates durchführen, die epoptes Pakete erneut installieren, die notwendigen Dateien wieder entfernen (am besten die Dateien in lmlcc unter Bereinigen mit hinzufügen) und dann das Image neu schreiben.

2 Kommentare

Der Beitrag Wie man Epoptes in linuxmuster.net integrieren kann erschien zuerst auf .:zefanjas:..

13. Februar 2018

Die verschlüsselte Übertragung von Daten wird immer mehr zu einem Muss im Web. In Firefox 60 stellt Mozilla zwei neue Einstellungen bereit, um relativ deutlich zu warnen, wenn eine Webseite über HTTP und nicht über HTTPS übertragen wird.

Basierend auf den Telemetrie-Daten von Firefox erfolgen mittlerweile beinahe 70 Prozent aller Webseiten-Aufrufe über HTTPS. In Deutschland sind es sogar fast 75 Prozent, in den USA über 78 Prozent.

HTTPS-Statistik Februar 2018

Erst vor kurzem hat Mozilla angekündigt, neue Web-Features nur noch über HTTPS verfügbar zu machen. Außerdem werden Webseiten, die über HTTP und nicht über HTTPS übertragen werden, ab Firefox 60 im Privaten Modus mittels durchgestrichenem Schloss in der Adressleiste als unsicher markiert.

Außerdem kommen mit Firefox 60 zwei weitere Einstellungen in about:config dazu, welche die Warnung bei unverschlüsselter Übertragung noch deutlicher machen. Beide werden in Firefox 60 standardmäßig allerdings noch deaktiviert sein.

Wird security.insecure_connection_text.enabled via Doppelklick auf true gestellt, erscheint bei Webseiten, die nur über HTTP übertragen werden, der Schriftzug „Nicht sicher“ in der Adressleiste. Dies gilt sowohl für private als auch für nicht private Fenster. Außerdem kommt mit security.insecure_connection_text.pbmode.enabled noch eine zweite Einstellung dazu. Wird diese auf true gesetzt, dann erscheint dieser Schriftzug nur in privaten Fenstern.

Firefox 60 Unsichere Verbindung

Der Beitrag Firefox 60: Neue Einstellungen für deutliche Warnung bei HTTP anstelle von HTTPS erschien zuerst auf soeren-hentzschel.at.

Nachdem ich eine eigene Instanz von Searx, die searx.site aufgesetzt habe (zu der ich auch mein erstes Firefox-Addon veröffentlicht habe), wurde ich von einigen angesprochen, die Fragen zur Installation hatten oder bei denen es Probleme gab. Des Weiteren gibt es anscheinend bisher keine Anleitung, die z.B. auf das zusätzliche Einrichten des Filtron Proxys zum Schutz von Searx eingeht oder die die Einrichtung von Nginx mit Letsencrypt thematisiert. Daher ich beschlossen mich hier an einer Anleitung zu versuchen.

Hinweisen möchte ich aber mit Nachdruck noch einmal, dass zunächst das von den Entwicklern von Searx herausgegebene Tutorial beachtet werden sollte. Dort werden nötige Änderungen sicherlich schnell eingepflegt, was hier nicht unbedingt der Fall sein muss.

Diesem Tutorial folge ich hier in den ersten Schritten auch komplett. Unterschiede zu diesem mache ich deutlich und erläutere sie. Ich

Zunächst müssen die für Searx nötigen Pakete installiert werden (hier habe ich die Anleitung so verändert, dass ich Paket, die sonst später erst installiert werden, hier schon installiere):

Vorarbeiten

sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev uwsgi uwsgi-plugin-python nginx letsencrypt

Installation und Einrichtung von Searx

Anschließend kann Searx installiert werden und der Searx-Nutzer angelegt werden:

cd /usr/local
sudo git clone https://github.com/asciimoo/searx.git
sudo useradd searx -d /usr/local/searx
sudo chown searx:searx -R /usr/local/searx

Nun werden die Abhängigkeiten in einem virtualenv installiert:

sudo -u searx -i
cd /usr/local/searx
virtualenv searx-ve
. ./searx-ve/bin/activate
./manage.sh update_packages

Danach kann ein Key für Searx erzeugt und in die Konfigurationsdatei eingefügt werden:

sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml

Nun kann Searx schon gestartet werden, indem man

python searx/webapp.py

eingibt.

Mit Hilfe eines Browsers, der in der Konsole läuft, wie z.B. links2, kann man nun überprüfen, ob alles korrekt läuft. Hierzu einfach http://localhost:8888 eingeben.

Wenn alles korrekt läuft die Debug-Option in der settings.yml deaktivieren:
sed -i -e "s/debug : True/debug : False/g" searx/settings.yml

Nun kann die virtuelle Umgebung und der Searx-Nutzer beendet werden. Hierfür zweimal exit eingeben.

Anschließend folgende UWSGI-Konfig-Datei erstellen (hier habe ich im Gegensatz zu Original-Anleitung noch eine Ergänzung für die Zusammenarbeit mit dem Filtron-Proxy vorgenommen, s. Anmerkung)

nano /etc/uwsgi/apps-available/searx.ini

Dies einfügen:

[uwsgi]
# Who will run the code
uid = searx
gid = searx

# disable logging for privacy
disable-logging = true

# Number of workers (usually CPU count)
workers = 4

# The right granted on the created socket
chmod-socket = 666

# Plugin to use and interpretor config
single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true

# Module to import
module = searx.webapp

# Virtualenv and python path
virtualenv = /usr/local/searx/searx-ve/
pythonpath = /usr/local/searx/
chdir = /usr/local/searx/searx/

#filtron
http = 127.0.0.1:8888

Anschließend muss diese Konfiguration aktiviert und gestartet werden:

cd /etc/uwsgi/apps-enabled
ln -s ../apps-available/searx.ini
/etc/init.d/uwsgi restart

Nginx und Let’s Encrypt

Nachdem jetzt Searx als Daemon bereits läuft, wollen wir die Seite natürlich verfügbar machen. Hierfür legen wir zunächst einen Virtual-Host an, der sich erheblich von dem doch sehr einfachen Beispiel in der Original-Anleitung unterscheidet. Wir verlassen an dieser Stelle auch die Originalanleitung. Noch ein Hinweis: example.com natürlich immer durch die eigene Domain ersetzen. Es bietet sich an sich zunächst über sudo su Root-Rechte zu besorgen.

nano /etc/nginx/sites-available/example.com.conf

Und dies dort einfügen:

server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /usr/local/searx;

access_log /dev/null;
error_log /dev/null;
# Useful for Let's Encrypt
location /.well-known/acme-challenge/ { allow all; }
location / { return 301 https://$host$request_uri; }
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;

access_log /dev/null;
error_log /dev/null;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header "X-Content-Security-Policy" "default-src 'self'; object-src 'self'; script-src 'self'";

add_header X-XSS-Protection "1; mode=block";

ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_dhparam /etc/letsencrypt/dhparams.pem;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_stapling on;
ssl_stapling_verify on;

root /usr/local/searx;

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:4004/;
}

}

Anschließend kann diese Konfiguration bereits aktiviert werden (funktionier so aber noch nicht):

cd /etc/nginx/sites-enabled
ln -s ../sites-available/example.com.conf

Wer genau hingesehen hat, dem ist aufgefallen, dass in der Nginx-Konfiguration bereits der Pfad zu Zertifikaten von Letsencrypt angelegt waren. Diese müssen nun aber zunächst erzeugt werden. Hierzu zunächst Nginx stoppen:

systemctl stop nginx

Um dann das Zertifikat zu erzeugen:
letsencrypt certonly --standalone -d example.com

und Nginx wieder starten und das Zertifikat noch einmal neu mit der Webroot-Methode anfragen (Letsencrypt fragt, ob ein neues Zertifikat ausgestellt werden soll. Diese Option wählen):
systemctl start nginx
letsencrypt certonly --webroot -d example.com -w /usr/local/searx

Da die Zertifikate von Let’s Encrypt nur 90 Tage gültig sind, sollte man sie automatisch erneuern lassen. Hierzu legen wir einen Cron-Job an, der täglich läuft:

nano /etc/cron.daily/letsencrypt-renew

Und fügen dies ein und speicher und schließen die Datei:

#!/usr/bin/env bash
letsencrypt renew
systemctl reload nginx

Nun noch Diffie-Hellman-Parameter erzeugen (dies kann dauern!):

openssl dhparam -out /etc/letsencrypt/dhparams.pem 2048

Filtron

Mit der oben beschriebenen Konfiguration läuft Searx immer noch nicht, da die Konfiguration auf den Betrieb mit dem Proxy Filtron ausgelegt ist, der unsere Instanz z.B. vor der Nutzung durch Bots schützen soll, weil dies dazu führen könnte, dass die Suchmaschinen, die Searx anfragt uns nach einiger Zeit ablehnen.

Zunächst muss für den Betrieb von Filtron Go installiert werden (hierwird davon ausgegangen, dass immer noch der Root-Nutzer genutzt wird. Wenn nicht noch einmal „sudo su“ eingeben):

apt-get install golang

Damit wir Go persistent nutzen können, müssen wir die Standard-Shell von Dash auf Bash ändern. Hierzu

dpkg-reconfigure dash

eingeben und bei dem sich öffnenden Dialog „Nein“ wählen (Danke @matze für den Hinweis).

Dann legen wir zunächst einen Nutzer für Filtron an und weisen ihm einen Ordner zu:

cd /usr/local
mkdir filtron
useradd filtron -d /usr/local/filtron
chown filtron:filtron -R /usr/local/filtron

Anschließend machen wir uns zum Nutzer filtron und richten Go für diesen ein:

sudo -u filtron -i
cd /usr/local/filtron
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc

Anschließend kann Filtron installiert werden:
go get github.com/asciimoo/filtron

Ob die Installation funktioniert hat, kann man z.B. mit der Ausgabe der Hilfe von Filtron ausprobieren:

".go/bin/filtron" --help

Wir benötigen noch ein Regelset für Filtron (wer die folgenden Regeln verändern möchte, findet hier Informationen).

nano rules.json

Hier dies einfügen und an die eigenen Bedürfnisse anpassen:

[
{
"name": "search request",
"filters": ["Param:q", "Path=^(/|/search)$"],
"interval": 60,
"limit": 60,
"actions": [
{"name": "log",
"params": {"destination": "stderr"}},
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
],
"subrules": [
{
"name": "roboagent limit",
"interval": 60,
"limit": 5,
"filters": ["Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "botlimit",
"limit": 0,
"stop": true,
"filters": ["Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "IP limit",
"interval": 60,
"limit": 60,
"stop": true,
"aggregations": ["Header:X-Forwarded-For"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "rss/json limit",
"interval": 60,
"limit": 5,
"stop": true,
"filters": ["Param:format=(csv|json|rss)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "useragent limit",
"interval": 60,
"limit": 15,
"aggregations": ["Header:User-Agent"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
}
]
}
]

Wer möchte kann nun schon ausprobieren, ob Filtron läuft:

filtron -rules rules.json

Doch wir werden Filtron noch mit Hilfe von Systemd daemonizieren (Sagt man das so?). Daher den Prozess beenden (STRG+C) und den User filtron verlassen:

exit

Nun eine neue Datei erstellen:

nano /etc/systemd/system/filtron.service

Und dies einfügen und wie gehabt speichern und schließen:

[Unit]
Description=filtron proxy

[Service]
Type=simple
User=filtron

ExecStart=/usr/local/filtron/.go/bin/filtron -rules /usr/local/filtron/rules.json

TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Anschließend kann dann der neue Service aktiviert und gestartet werden:

systemctl enable /etc/systemd/system/filtron.service
systemctl start filtron.service

Ob Filtron wunschgemäß läuft, kann nun folgendermaßen überprüft werden:
systemctl status filtron.service

Anpassungen
Jetzt sollte die Metasuchmaschine Searx mit dem Proxy Filtron laufen. Abschließend können noch einige Anpassungen vorgenommen werden. So habe ich z.B. Google als Quelle deaktivieren müssen, da hier immer eine Fehlermeldung auftauchte. Das Problem ist aber bekannt. Suchmaschinen können in der Datei /usr/local/searx/searx/settings.yml aktiviert und deaktivert werden. Nur immer daran denken, nach einer Veränderung UWSGI neu zu starten:

systemctl restart uwsgi

Viel Spaß beim Aufsetzen von Searx! Ich freue mich über (konstruktives) Feedback!

Mir haben beim Verfassen dieser Anleitung folgende Quellen sehr geholfen:

12. Februar 2018

Mozilla hat Firefox 60 eine neue Option spendiert, die seit Firefox Quantum vor allem von ehemaligen Nutzern der Erweiterung Tab Mix Plus vermisst worden ist. Darüber kann Firefox angewiesen werden, alle Eingaben in die Adressleiste automatisch in einem neuen Tab zu öffnen.

Eingaben in die Adressleiste öffnet Firefox standardmäßig im gerade aktiven Tab. Dies ist normalerweise eine sinnvolle Konfiguration, jedoch gibt es auch Nutzer, die es bevorzugen, wenn Firefox den aktiven Tab nie überschreibt. Vor Firefox Quantum konnte dies über die Erweiterung Tab Mix Plus erreicht werden.

Für diese Nutzer mit dieser Vorliebe gibt es eine gute Nachricht: ab Firefox 60 ist eine solche Konfiguration wieder möglich, und das sogar ohne Erweiterung. Dazu muss über about:config der Schalter browser.urlbar.openintab per Doppelklick auf true geschaltet werden.

Mit browser.search.openintab besitzt Firefox bereits seit Jahren eine vergleichbare Einstellung für das separate Suchfeld. Mit Firefox 57 hatte Mozilla außerdem erst eine neue Einstellung eingeführt, um Lesezeichen immer in einem neuen Tab zu öffnen (browser.tabs.loadBookmarksInTabs).

Der Beitrag Firefox 60: Neue Einstellung, um Eingaben in Adressleiste in neuem Tab zu öffnen erschien zuerst auf soeren-hentzschel.at.

Jeder, der schon einmal in einem Computerraum unterrichtet hat, kennt die Situation. Die Aufmerksamkeit wiederherzustellen ist in einem Raum mit Computern besonders schwierig. Ständig sind die Schüler mit irgendetwas auf dem Schirm beschäftigt. Oder man möchte etwas erklären oder am Beamer zeigen und einfach nur sicherstellen, dass niemand versucht ist, auf seinen Bildschirm zu schauen, in der Angst, dort etwas zu verpassen. Um solche Dinge besser in den Griff zu bekommen, möchte ich heute – als weitere App des Monats – Epoptes vorstellen, eine Software, die eine große Hilfe für jede Form von Unterricht in einem Computerraum ist.

Epoptes ist aktuell nur für Ubuntu, Debian und openSUSE verfügbar. Wer Windows im Computerraum verwendet, muss sich nach einer anderen Lösung umschauen, z.B. Veyon (ehemals iTALC).

Features

Epoptes bringt folgende Features und Funktionen mit:

  • Bildschirme zentral überwachen (Beobachten / Fernsteuern)
  • eigenen Bildschirminhalt auf anderen Computern im Raum anzeigen
  • Befehle ausführen
  • Nachrichten versenden
  • Sound an/aus
  • Bildschirmsperre an/aus

Installation

[Update] Wer Epoptes zusammen mit linuxmuster.net nutzen möchte, kann dieser Anleitung folgen: Wie man Epoptes in linuxmuster.net integrieren kann.

Epoptes bringt zwei Programme mit. Einmal den Epoptes-Client, d.h. das Programm, welches auf den zu überwachenden Computern installiert wird. Für den Lehrer-PC wird dagegen das Hauptprogramm installiert, mit dem man die einzelnen Computer überwachen und steuern kann.

Master-Rechner (aka Lehrer-PC)

Die Pakete für Epoptes sind in den offiziellen Paketquellen von Ubuntu enthalten. Mit den folgenden Befehlen aktualisieren wir die Paketquellen und installieren Epoptes für den Master-Rechner.

$ sudo apt update
$ sudo apt install epoptes

Damit man Epoptes benutzen kann, muss man Mitglied in der epoptes Gruppe sein (oder eine andere festgelegte Gruppe – siehe unten).

$ sudo usermod -aG epoptes $USER
$ newgrp - epoptes

Die Konfigurationsdatei für den Master-Rechner finden wir unter /etc/default/epoptes. Dort können wir z.B. die Gruppe ändern, die nötig ist, um die Klassenraummanagement-Software benutzen zu dürfen.

$ sudo nano /etc/default/epoptes

Unter SOCKET_GROUP wird die Gruppe festgelegt (z.B. teacher). Die Gruppe muss allerdings existieren. Neben der Gruppe können wir auch noch den Port (standardmäßig 789) anpassen.

Client-Rechner (aka Schüler-PC)

Die Installation auf dem Client ist ähnlich. Im Unterschied zum Master-Rechner installieren wir hier das Paket epoptes-client.

$ sudo apt update
$ sudo apt install epoptes-client

Der Client muss wissen, wo er den Master-PC finden kann. Das können wir in der Datei /etc/default/epoptes-client auf dem Client konfigurieren:

$ sudo nano /etc/default/epoptes-client

Unter SERVER geben wir den DNS-Namen des Master-PCs an, z.B. server. Falls wir keinen zentralen DNS-Server in unserem Netzwerk haben, können wir den Eintrag auch in der Datei /etc/hosts auf dem Client vornehmen. Dort fügen wir folgenden Eintrag hinzu:

192.168.1.10 server

Die IP-Adresse muss natürlich noch angepasst werden. Mit ping server können wir überprüfen, ob der Eintrag auch aufgelöst wird.

Als letztes müssen wir noch das Zertifikat für die sichere Kommunikation vom Master-PC auf den Client herunterladen.

$ sudo epoptes-client -c

Zum Schluss müssen wir den Client-Rechner einmal neustarten. Der Epoptes-Client startet automatisch beim Booten des Rechners.

Bedienung von Epoptes

Epoptes Hauptfenster

Alle wesentlichen Bedienelemente befinden sich oben in der Werkzeugleiste. Hinter den Symbolen verstecken sich folgende Funktionen:

  1. Client per Wake-On-LAN starten (muss separat eingerichtet werden)
  2. Benutzer abmelden
  3. Client neustarten
  4. Client herunterfahren
  5. Die Steuerung an einem Client übernehmen. Ein einfacher Doppelklick auf einen Client öffnet ein Fenster im „Beobachten-Modus“, d.h. man kann den Rechner beobachten ohne jedoch die Steuerung zu übernehmen.
  6. Sendet den Bildschirm an die Clients. Praktisch, wenn man z.B. keinen Beamer hat.
  7. Stoppt die Ausstrahlung des Bildschirms.
  8. Führt einen Befehl am Client aus.
  9. Sendet eine Nachricht an alle ausgewählten Clients
  10. Sperrt alle ausgewählte Clients. Sehr praktisch 🙂
  11. Entsperrt die Bildschirme wieder.
  12. Zeigt Informationen über den Client an (MAC-Adresse, CPU, RAM, …)

Matthias, aus der linuxmuster.net Community, hat vor einiger Zeit auch ein kurzes Einführungsvideo erstellt:

Fazit

Wir benutzen Epoptes bei uns in unserem Computerraum. Da wir räumlich nicht die Möglichkeit hatten, alle Bildschirme am Rand aufzustellen, sodass man natürlicherweise immer einen Blick auf alle Bildschirme hat, ist diese Programm eine große Hilfe für uns. V.a. die Funktion alle Bildschirme mit einem Klick zu sperren ist äußerst hilfreich, um schnell die Aufmerksamkeit herstellen zu können. Einige unserer Kollegen nutzen auch gern die Möglichkeit, einen Schülerbildschirm vorn am Beamer zu projizieren, um etwas zu erläutern oder damit Schüler ihre Ergebnisse vorstellen können.

Welche Erfahrungen hast du mit Epoptes im Speziellen oder einer anderen Klassenraummanagement-Software gemacht?

6 Kommentare

Der Beitrag Klassenraummanagement mit Epoptes – App des Monats erschien zuerst auf .:zefanjas:..

11. Februar 2018

Im Privaten Modus merkt sich Firefox keine Surf-Spuren wie Chronik oder Cookies. Außerdem werden standardmäßig Tracking-Scripts blockiert. Webseiten, welche nicht über HTTPS aufgerufen werden, werden ab Firefox 60 in diesem Modus als unsicher markiert.

Besuchte Webseiten, Eingaben in das Suchfeld und Logins sind Dinge, die sich Firefox, neben anderen Dingen, merkt. Was häufig praktisch ist, ist nicht immer erwünscht. Daher gibt es mit dem sogenannten Privaten Modus eine Betriebsart, bei der sich Firefox all dies nicht merkt. Auch liefert der Private Modus standardmäßig mehr Privatsphäre. Bekannte Tracking-Scripts von Drittanbietern werden nämlich blockiert. Neben einer Verbesserung der Privatsphäre sorgt dies ganz nebenbei für deutlich weniger Werbung auf den Webseiten und für eine spürbar bessere Webseiten-Performance. Ab Firefox 59 wird außerdem der sogenannte Referrer im Privaten Modus erheblich gekürzt, um die Privatsphäre weiter zu verbessern.

Mit Firefox 60 kommt eine weitere Abweichung vom regulären Browsing dazu. Ab dann nämlich werden Webseiten, die über HTTP und nicht über HTTPS aufgerufen werden, mit einem durchgestrichenen Schloss in der Adressleiste und damit als unsicher markiert.

HTTP-Webseiten im Privaten Modus

Diese Änderung ist Teil der Bestrebungen aller großen Browserhersteller, Verschlüsselung im Web voranzutreiben. Erst vor kurzem hat Mozilla angekündigt, neue Web-Features nur noch über HTTPS verfügbar zu machen. Basierend auf den Telemetrie-Daten von Firefox erfolgen mittlerweile beinahe 70 Prozent aller Webseiten-Aufrufe über HTTPS. In Deutschland sind es sogar fast 75 Prozent, in den USA über 78 Prozent.

HTTPS-Statistik Februar 2018

Der Beitrag Firefox 60: HTTP-Webseiten im Privaten Modus werden als unsicher markiert erschien zuerst auf soeren-hentzschel.at.

Die eigene Action Cam produziert wunderbare Videos in Full HD (1080p) mit 60 Bildern pro Sekunde (FPS). Die Videos sind scharf und flüssig, aber mit einer Bitrate von etwa 65 Mbit/s auch recht groß. Nextcloud hilft mir zwar, die Videos auch anderen zugänglich zu machen, aber direktes Streaming ist bei den meisten Internetanschlüssen nicht möglich. Für Freunde mit an­ti­quierten Internetanschlüssen stelle ich deshalb eine qualitativ reduzierte Version bereit, hierfür nutze ich ffmpeg.

Hier ist ein einfaches Beispiel, wie man mit ffmpeg ein Video in 720p mit 30 FPS konvertiert. Ausgehend von einer Full HD Auflösung (1920 x 1080 Pixel) ergibt sich dann eine Auflösung von 1280 x 720 Pixeln.

ffmpeg -i video.mp4 -vf scale=-1:720 -c:v libx264 -r 30 -crf 23 -preset fast -c:a copy video_720p30.mp4

Entscheidend für die Bitrate/Dateigröße und Qualität sind vor allem die Parameter

-crf
  und
-preset
, diese können bei Bedarf entsprechend angepasst werden. Eine Erklärung zum CRF Faktor findet man in Werner Robitzas Blog, übliche werte liegen zwischen 18 (kaum sichtbarer Qualitätsverlust) und 23 (Qualitätsverlust sichtbar, aber noch akzeptabel). Preset gibt an, wie viel Zeit sich ffmpeg für das Konvertieren nehmen darf. Je mehr Zeit man ffmpeg gewährt, desto besser fällt die Kompression und damit die Dateigröße aus. Weitere Informationen zum H.264 Encoding findet man im ffmpeg Wiki.

Außerdem soll das Video statt 60 FPS nur noch 30 FPS aufweisen, was mit 

-r 30
  erreicht wird. Der Unterschied fällt vielen nicht unbedingt auf, aber in Szenen mit rasanten Bewegungen sind 60 FPS deutlich von Vorteil.

Meine mit dieser Methode konvertierten Videos haben  je nach Ausgangsmaterial eine Bitrate von etwa 6 bis 14 Mbit/s, was meiner Meinung nach akzeptabel ist. Mit dem CRF Faktor wählt man nicht die gewünschte Bitrate, sondern die gewünschte Qualität. Die Bitrate variiert, weil sich das Video je nach Inhalt unterschiedlich gut komprimieren lässt.

Ich habe das ganze in ein kleines Script gepackt und bei Github veröffentlicht, hiermit kann ich schnell meine Videos konvertieren. Der Aufruf erfolgt unter Angabe der Eingabedatei, Auflösung und Bildrate:

./video_convert.sh video.mp4 720 30

Gimp Rahmen zeichnen Beitragsbild

GIMP ist eine tolle, freie und extrem umfangreiche Software zur Bildbearbeitung. Aufgrund des riesigen Funktionsumfangs sind viele, auch einfache Funktionen oft nicht einfach zu erreichen. Ich habe beispielsweise häufiger den Anwendungsfall, auch für diese Webseite, Elemente auf einem Screenshot mit einem Rahmen zu versehen. Eine Funktion zum zeichnen eines Rahmens habe ich in GIMP allerdings nicht finden können.

Mit GIMP einen Rahmen zeichnen

Letztendlich ist aber auch diese Aktion mit GIMP einfach umzusetzen, wenn man weiß wie es geht.

 

  • Zuerst wählt man das Werkzeug “Rechteckige Auswahl” GIMP Rechteckige Auswahl
  • Dann zieht man einen Rahmen um das gewünschte Element
    GIMP Rahmen ziehen
  • Anschließend geht man in der Menüleiste auf “Bearbeiten” und wählt den Punkt “Auswahl nachziehen” Damit wird die Auswahl mit der gerade ausgewählten Farbe mit einem Rahmen nachgezeichnet.
    GIMP Auswahl nachziehen

Dieser Text ist lizensiert unter einer Creative Commons Namensnennung 4.0 International Lizenz.

Mit GIMP ein Rechteck zeichnen ist ein Beitrag von techgrube.de.

Mit systemd.path lassen sich Dateien und Verzeichnisse auf bestimmte Ereignisse hin überwachen. Tritt ein spezifiziertes Ereignis ein, wird eine Service-Unit ausgeführt, welche üblicherweise den gleichen Namen, wie die Path-Unit trägt.

Wie dies funktioniert, möchte ich an einem sehr einfachen Beispiel zeigen. Das Ziel ist, die Datei testfile auf Änderungen hin zu überwachen. Immer wenn die Datei nach einem Schreibvorgang geschlossen wird, soll ein bestimmtes Skript gestartet werden.

beispiel.path

Im Verzeichnis /etc/systemd/system/ wird die Datei beispiel.path mit folgendem Inhalt erstellt:

[Unit]
Description=Datei auf Änderungen hin überwachen

[Path]
PathChanged=/home/oglattermann/testfile
Unit=beispiel.service

[Install]
WantedBy=multi-user.target

In der Sektion [Path] wird mit PathChanged= der absolute Pfad zu der zu überwachenden Datei spezifiziert, während Unit= angibt, welche Service-Unit ausgeführt werden soll, wenn sich die Datei ändert. Diese Unit soll gestartet werden, wenn sich das System im Multi-User-Mode befindet.

beispiel.service

Wird die Datei testfile geändert (genau: geschrieben und geschlossen), wird folgende Service-Unit aufgerufen, um das darin spezifizierte Skript auszuführen:

[Unit]
Description=Führt Skript aus, wenn eine Datei sich geändert hat.

[Service]
Type=simple
ExecStart=/home/oglattermann/skript.sh

[Install]
WantedBy=multi-user.target

Das Skript skript.sh enthält dabei in diesem Beispiel lediglich folgenden Code:

#!/bin/bash
echo "Datei geändert" >/home/oglattermann/Output.txt

Für einen Test müssen die beiden soeben erstellten Units noch aktiviert werden:

sudo systemctl enable beispiel.path beispiel.service
sudo systemctl start beispiel.path

Schreibt man nun die Datei testfile neu bzw. wird eine Schreiboperation auf diese Datei abgeschlossen, wird die entsprechende Service-Unit ausgeführt und man findet die Datei Output.txt vor.

Anwendungsbeispiele

Die folgende, unvollständige und nicht abschließende Liste führt einige Anwendungsbeispiele auf, wo sich systemd.path sinnvoll nutzen lässt.

  • Ereignisgesteuerte Datenverarbeitung starten
  • Dateien unter /etc überwachen und bei Änderungen Benachrichtigung versenden
  • Import-Ordner auf neue Dateien hin überwachen und Verarbeitung starten

Quellen und weiterführende Links

10. Februar 2018

Neue Woche, neue Softwareversionen – so könnte das man diese Woche zusammenfassen. Was meine Highlights waren, zeige ich euch in der heutigen Ausgabe des Wochenrückblicks.

Wochengeschehen

Top-Thema: VLC 3.0

Wer kennt ihn nicht – der freie, sehr geschätzte, mächtige und plattformunabhängige VLC media player. Er zählt auf sehr vielen Computern zum Standardrepertoire für die Medienwiedergabe, da er sehr viele Formate verarbeiten kann.

Der VLC media player erreicht nun Version 3.0.0 mit dem Codenamen Vetinari. Highlights sind standardmäßig aktivierte Hardwarebeschleunigung, um auch 4K und 8K-Video darzustellen, die Unterstützung von 10bit und HDR, die Wiedergabe auf Chromecast und vieles, vieles mehr. Die neue Version schafft nun auch eine Einheit mit den mobilen Apps und eine einheitliche Vergabe der Versionsnummern. Alle weiteren Features sind auf der Übersichtsseite der neuen Version zu finden.

Artikeltipps

Diesmal mische ich die Kategorien “Weitere News” und “Artikeltipps”.

  • KMyMoney 5 ist vor einigen Tagen erschienen. Habe die neue Version bereits getestet und bin bis auf einen Crash ziemlich zufrieden – ich muss aber zugeben, dass meine Datenbank dort auch recht komplex ist. LinuxNews hat zur neuen Version einige Details, zumal auch eine Portierung mit dieser stattfand.
  • Für Linux-Nutzer sind Updates beim Herunterfahren sehr unüblich. Mir jedenfalls ist so etwas noch nicht untergekommen. Wer trotzdem in den Genuss des Update-Screens kommen möchte, kann aber Fake Update ausprobieren.
  • WordPress 4.9.4 bitte händisch installieren. Update: 4.9.4 statt 4.9.5 war gemeint. Hmm naja, bei mir hat das Auto-Update gekappt.
  • git merge macht Probleme und nervt? Dann schaut euch das CLI-Tool fac an, sieht ganz nett aus. svij stellt es vor.
  • Last but not least: wer es noch nicht mitbekommen hat: die Hölle ist zugefroren. Wie PowerShell 6.0 unter Linux installiert werden kann, zeigt Andre.
    https://packages.microsoft.com/config/ubuntu/17.04/prod.list
    … *hach*, dass ich das noch miterleben darf

Wer Microsoft PowerShell Core 6 unter Linux oder auch einem anderen Betriebssystemen nutzt, sendet automatisch Telemetriedaten an Microsoft. Ja genau, auch wenn Ihr kein Microsoft Windows verwendet, versucht der Konzern Daten über seine Software mittels Telemetrie von euch zu erhalten. In einem anderen Artikel habe ich euch bereits erklärt wie PowerShell Core unter Linux installiert wird. Hier möchte ich euch zeigen wie Ihr die PowerShell Core Telemetrie deaktivieren könnt.

Laut Microsoft angaben sollen nur das Betriebssystem und die Version von PowerShell erhoben und gesendet werden. Diese Daten sind auch in folgenden PowerShell Variablen enthalten:

  • $PSVersionTable.OS
  • $PSVersionTable.GitCommitId

Die Daten aus der Varibale “$PSVersionTable.OS” erhaltet Ihr auch mit dem Linux Befehl “uname -srv“.

Wie deaktiviere ich die Telemetrie bei PowerShell Core?

Wenn Ihr PowerShell Core (PSCore) weiterhin Nutzen möchtet, könnt Ihr die optionale Option zur Telemetrie Deaktivierung nutzen. Um dies zu erreichen, muss aus dem Installationsverzeichnis von PowerShell Core  ($PSHome) die Datei mit dem Namen DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY entfernt werden.

Über die Linux Konsole (Bash) PSCore Telemetrie deaktivieren:

sudo rm /opt/microsoft/powershell/6.0.0/DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY

Oder in der Linux PowerShell Core Konsole über folgenden Befehl:

sudo pwsh
Remove-Item $PSHOME\DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY

Danach dürfte Microsoft keine Daten mehr über die PSCore Telemetry von euch erhalten.

PSCore Telemetrie deaktivieren
Interessantes zur den Telemetriedaten von PowerShell Core
  • Eine Auswertung über die gesammelten Telemetriedaten von PowerShell Core und zum Projektstatus hat Microsoft mit seinem Tools PowerBI und Azure auf dieser Seite visualisiert.
  • Die mittels PSCore erhobenen Daten fallen unter die Microsoft Datenschutzerklärung (genau wie bei Windows 10).

PowerShell Core Linux – Microsoft Telemetrie abschalten ist zuerst erschienen auf André Hemkes.

Bild: © CrazyCloud / Fotolia.com

Der Browser ist zumindest mittelfristig der zentrale Baustein für ein ausgefeiltes Konzept zum Schutz von Sicherheit und Privatsphäre. Im Internet gibt es zig Anleitungen wie man Browser absichert und welcher Browser zu empfehlen ist. Manches davon ist Marketing, aber vieles auch interessant und lesenswert. Manchmal zeigen die Begründungen aber auch argumentative Schwachstellen und es gibt Vorannahmen, die nicht hinterfragt werden. Darunter gerne: Open Source ist gut!

So konnte man kürzlich in einem sehr guten Blog zu dem Thema den ersten Teil einer Artikelserie zur Absicherung von Firefox lesen. Bereits der erste Teil ist lesenswert und die weiteren Teile werden hoffentlich auch interessant. Der Autor hat mit dem Zwischenfazit, dass sich unter all den Browsern da draußen, vor allem Firefox als Grundlage eignet, sicherlich nicht unrecht. Insbesondere die Bemerkung über die - angeblich so sicherheitsorientierten - Forks ist gut und wichtig.

Die Grundannahme lautet jedoch: Einige Browser werden von vornherein ausgeschlossen, weil sie nicht quelloffen sind. Firefox ist hingegen quelloffen und daher das geringere Übel. Eine einsehbarer Quellcode ist in dieser Argumentation ein grundlegender Baustein für Sicherheit.

Quelloffen bedeutet: Der Quellcode ist frei (also offen) von jedem einsehbar. Nach meiner Auffassung ist das eine »zwingende« Voraussetzung, denn Quelloffenheit bedeutet Transparenz – ein wichtiges Element der IT-Sicherheit, denn sie ist eng mit Vertrauen verknüpft. Proprietärer Software muss man vertrauen, dass sie sicher ist und keine Backdoors integriert hat. Bei quelloffener Software (Transparenz) kann dies (und sollte auch regelmäßig) von vielen Augen geprüft werden.

Zitat: Kuketz-Blog - Firefox: Ein Browser für Datenschutzbewusste – Firefox Kompendium Teil1

Weiter unten heißt es jedoch im Abschnitt zu Chrome - und ausdrücklich auch erwähnt - Chromium.

Chrome / Chromium: Chrome ist ein Browser von Google. Allein das genügt eigentlich schon, um einen großen Bogen um den Browser zu machen. [...] Erst Chromium ist vollständig quelloffen und unterscheidet sich von Chrome.

Zitat: Kuketz-Blog - Firefox: Ein Browser für Datenschutzbewusste – Firefox Kompendium Teil1

Hier muss man sich doch fragen: Ist Chromium denn nicht quelloffen genug? Laut Homepage ist Chromium ein quelloffenes Projekt und steht unter BSD-Lizenz. Die Unterschiede zu Chrome sind bekannt. Warum Chromium trotzdem im folgenden ausscheidet bleibt unklar. Mutmaßlich gibt die enge Anbindung an Google hier den Ausschlag.

Grundsätzlich kann man die Annahme teilen, dass ein Browser, der maßgeblich von Google entwickelt wird nicht sicher hinsichtlich des Schutzes der Privatsphäre sein kann. Hier gilt das gleiche wie für Android (siehe: Kommentar: Android - Keine sichere Alternative Teil II - Standortdaten über Bluetooth). Warum ist aber das eine Projekt vertrauenswürdig, weil es quelloffen ist - trotz dutzender fragwürdiger Entscheidungen in der jüngeren Vergangenheit (siehe: Firefox Quantum - Abstieg trotz Quantensprung?) - während das andere Projekt von seinem Open Source Status nicht profitiert?

Nun, vermutlich liegt das daran, dass so große Projekte wie Chromium oder Firefox von niemandem komplett überblickt werden können - schon gar nicht von Außenstehenden. Der offen liegende Quellcode wird dann aber zu einem reinen PR-Argument, weil eine faktische Sicherheitsüberprüfung nicht stattfindet oder stattfinden kann. Sofern man den Ergebnissen einer gängigen Suchmaschine trauen darf, hat es bisher auch kein vollständiges Audit einer aktuellen Firefox-Version gegeben, das gleiche gilt für Chromium.

Doch wo ist dann der Vorteil gegenüber proprietären Projekten ohne frei zugänglichen Quellcode? Es geht hier um Vertrauen und quelloffene Projekte verdienen diesen scheinbar - es sei denn sie stammen von Google. Das ist eine Argumentation mit schwerer Schlagseite und zeigt die Schieflage, in der sich die vernetze Open Source- und Datenschutzgemeinde machmal befindet.

Trotzdem ist Firefox ein guter Browser und hinsichtlich der Sicherheit eine gute Wahl. Lediglich die Argumentationsmuster muss die Open Source-/Datenschutz-Gemeinschaft nochmal hinterfragen. Die oben genannten Zitate sind exemplarisch, aber bei weitem nicht singulär. Nicht jede Voranahme ist richtig, wenn man sie lange genug behauptet.

Schon lange strebe ich danach mich möglichst unabhängig von Google und anderen Konzernen zu machen, die meine Daten verwerten. So nutze ich einen selbst betriebenen Mailserver, den ich mit iRedMail aufgesetzt habe, nutze Nextcloud mit Collabora Online. Ich habe zwar noch Accounts bei kommerziellen Sozialen Netzwerken, doch eigentlich nutze ich seit kurzem nur noch meinen Mastodon-Account, auf der Instanz, die ich vor einigen Wochen aufgesetzt habe. Als Suchmaschine habe ich bisher sowohl auf meinem Smartphone, als auch auf meinen Rechnern StartPage als datensparsame Google-Alternative verwendet.

searching photo
Startpage verwendet auch die Google-Ergebnisse, speichert im Unterschied zu Google aber nicht die IP-Adressen der Nutzer und wertet auch nicht andere Daten des Nutzers aus. So fehlen die personalisierten Suchergebnisse, doch diese, meist ja als Werbung deutlich werdenden Ergebnisse, haben mir nie gefehlt.

Vor einigen Tagen stieß ich zum wiederholten Male auf Searx. Searx ist im Unterschied zu StartPage eine Metasuchmaschine, d.h. es werden Ergebnisse aus verschiedenen Suchmaschinen abgerufen und aufbereitet. Gemeinsam mit StartPage hat Searx, dass Datenschutz eine entscheidende Motivation ist. Ein weiterer gewichtiger Unterschied zwischen den beiden ist der, dass Searx freie Software ist und selber betrieben werden kann. Dies habe ich direkt als Ansporn genommen und habe Searx entsprechend der Installationsanleitung aufgesetzt. Die Installation unter Ubuntu ist so wirklich ein Kinderspiel. Erreichbar ist die von mir aufgesetzte Suchmaschine unter searx.site. Viel Spaß beim Testen und Nutzen!

9. Februar 2018

Mozilla hat mit Firefox 58.0.2 ein außerplanmäßiges Update für Firefox 58 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 58.0.2 für Microsoft Windows, Apple macOS und Linux

Mozilla hat ein Update außer der Reihe für Firefox 58 veröffentlicht. Mit dem Update auf Firefox 58.0.2 behebt Mozilla eine mögliche Absturzursache der Tabs während des Druckvorgangs. Wegen Abstürzen in Zusammenhang mit dem Off Main Thread Painting (OMTP) wurden zusätzliche Grafikkarten-Treiber auf die Blockierliste gesetzt. Außerdem wurden Probleme in den Webmailern Microsoft Hotmail sowie Microsoft Outlook behoben und ein Problem mit dem Programm-Update unter Apple macOS behoben.

Der Beitrag Mozilla veröffentlicht Firefox 58.0.2 (Desktop) erschien zuerst auf soeren-hentzschel.at.

Bei meiner täglichen Arbeit, komme ich mit Microsoft Windows Systemen und PowerShell in Berührung. Privat beschäftige ich mich jedoch überwiegend mit Linux und Open Source Themen.  Umso interessanter finde ich es, dass beide Welten immer mehr mit einem Werkzeug administriert werden sollen. Wenn es nach Microsoft geht, ist dieses Werkzeug PowerShell Core. Letzten Monat hat Microsoft dies in der Version 6.0 veröffentlicht.

PowerShell Core 6.0 unter Linux

PowerShell Core und Windows PowerShell?!

Ein kurzer Umriss, für alle die damit nicht so vertraut sind. PowerShell ist ein Kommandozeilen-basiertes Framework womit sich Vorgänge automatisieren und Systeme administrieren lassen. PowerShell Core (PSCore) ist als Open Source (MIT-Lizenz) für Windows, Linux sowie macOS verfügbar.  PSCore ist eine Abspaltung (Fork) von Windows PowerShell.

PSCore setzt auf der CoreCLR (.NET Core Common Language Runtime), was im Gegensatz zum proprietären Windows PowerShell der CLR (Common Language Runtime) des .NET Framework und Microsoft liefert dies mit Windows als Teil des Windows Management Framework (WMF) aus.

Mit PowerShell Core kann man allerdings nur die Funktionen von .NET Core und .NET Standard nutzen. Dies liegt daran, dass im Hintergrund für statisches .NET-Methoden oder C#-Cmdlets immer auf die Runtimes von .NET Core zurückgegriffen wird. Einige PowerShell Module wie z.B. ActiveDirectory werden laut Microsoft nicht für PowerShell Core unterstützt. Dies bedeutet aber nicht, dass diese nicht lauffähig sind (Konnte ich leider nicht testen). Also Achtung, die Befehle sind nicht über alle Versionen für unterschiedliche Betriebssysteme gleich. PowerShell Core stellt nur einen Teil der Befehle und Module von Windows PowerShell zur Verfügung.

Vorteile PowerShell Core auf Linux?

Diese Frage hat mich erst etwas länger beschäftigt. Wenn man es aber aus Sicht eines reinen Windows Administrator sieht, dann kann man sich auf einem Linux Host ähnlich wie auf einem Windows Server in PowerShell bewegen und Befehl abfeuern um Informationen zu erhalten. Ein Linux Administrator hingegen wird hier (Ohne PowerShell Kenntnisse) keine Vorteile erhalten. Die Mischung macht es! Wenn man auf beiden Systemen zu Hause ist, dann können beide mit (fast) den gleichen Befehlen administriert werden. Außerdem stehen einem so .Net Standard Funktionen unter Linux zur Verfügung (z.B. “[math]::pi”).

Wie PowerShell Core auf Linux installieren?

Das Microsoft PowerShell Team stellt auf GitHub für Ubuntu, Debian *.deb und für CentOS, Red Hat Enterprise, OpenSUSE, Fedora *.rpm offizielle Pakete mit einer Installations-Anleitung zur Verfügung. Unterstützung von der Community gibt es dabei für Arch Linux, Kali Linux und andere Linux Versionen die mit *.AppImage umgehen können.

Wer direkt aus dem Microsoft repository PowerShell unter Ubuntu 17.04 installieren möchte, geht wie folgt vor:

# Import the public repository GPG keys
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Register the Microsoft Ubuntu repository
curl https://packages.microsoft.com/config/ubuntu/17.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

# Update the list of products
sudo apt-get update

# Install PowerShell
sudo apt-get install -y powershell

# Start PowerShell
pwsh

Weitere Informationen was bei PowerShell Core Version 6.0 neu ist, findet ihr bei Microsoft.

PSCore gut zu Wissen!

Im Gegensatz zu Windows PowerShell oder der normalen Linux Konsole gibt es ein paar Dinge bei PSCore unter Linux zu beachten.

  • Aliase
    • Einige unter Linux bekannte Befehle wie z.B. “ls”, “cat” oder”man” sind unter Windows ein Alias für entsprechende PowerShell CMDlets. Diese stehen daher nicht unter Linux oder macOS zur Verfügung, da es hier eigenständige Befehle (außerhalb von PowerShell) sind. Bei PSCore unter Linux gibt es aber auch Aliase die genutzt werden können (Aufruf über “alias”).
  • Case-sensitivity
    • Unter Linux wird zwischen Groß-/Kleinschreibung auch in Powershell Core unterschieden. Bei PSCore unter Windows ist dies nicht so.
  • Slash
    • Für Pfadangaben unter Windows werden beide Schrägstriche (Slash) akzeptiert, sowohl Slash “/” als auch Backslash “\”. Unter Linux und macOS ist dies nicht so. Hier wird nur “/” in Pfadangaben akzeptiert. Zum bilden von Pfaden sollte man in PowerShell Befehle (CMDlets) wie “Split-Path” oder “Join-Path” sowie PowerShell Umgebungsvariablen “$pwd” oder $PSScriptRoot einsetzen.
  • Object-Type
    • Unter Linux liefern Befehle wie z.B. “ls” einen String in PowerShell Core zurück (Siehe Punkt Alias). In Windows hingegen sind es Objekte die zurückgegeben werden (Get-ChildItem” alias “ls”). Generell geben die meisten PowerShell CMDlets (Betriebssystem unabhängig) ein Objekt zurück.

Persönliche Erfahrung

PowerShell Core unter Linux zu nutzen, während man vorher Windows PowerShell fast täglich anwenden, erfordert zum umdenken. Außerdem ist man durch die geringen Befehle (CMDlets) und fehlenden zusätzlichen Module  teilweise stark eingeschränkt. Dies kann einem beim Linux PowerShell Skripting als Windows Administrator schnell zum Verhängnis werden.

Womit ich in letzter Zeit unter Windows PS beschäftigt habe ist Common Information Model (CMI), zum auslesen von Informationen (ähnlich der WMI (Windows Management Instrumentation)). Diese Unterstützung ist zur Zeit nicht geplant. Es könnte aber wie andere Features zukünftig, sofern die Entwickler-Community dies wünsch, implementiert werden.

Ich sehe PSCore noch nicht als Sinnvollen Ersatz für die gute alte  Konsole (bash) in Verbindung mit einigen Tool unter Linux an. PSCore hat aber Potenzial für Administratoren als übergreifendes Werkzeug zu dienen, wenn diese verschiedene Betriebssysteme in einem Netzwerk betreuen müssen. Evtl. nehme ich aber dies auch nur so war, da Windows und Linux bisher immer getrennt betrachtet wurden und PowerShell mir aktuell nur unter Windows Vorteile bringt. Für Windows Administratoren bringt PowerShell Core unter Linux sicherlich Vertrautheit und den Vorteil sich nicht mit den Eigenheiten der Linux Konsole (bash) beschäftigen zu müssen.

PowerShell Core 6.0 unter Linux installieren ist zuerst erschienen auf André Hemkes.

Heute bin ich über eine kleine bash Funktionalität gestolpert. Normalerweise werden alle eingegebenen Befehle auf der Bash Shell in der Historie gespeichert und können ja über den „history“ Befehl oder über Angabe der „Zeilennummer“ mit einem Ausrufezeichen wiederholt werden.

Beispiel

$ history

 826 [2018-02-08 19:25:05] date
 827 [2018-02-08 19:25:22] history
 828 [2018-02-08 19:37:18] top

$ !826
date
Do 8. Feb 19:44:22 CET 2018

 

Wenn nun aber vor dem eigentlich Befehl ein Leerzeichen mit auf er bash eingegeben wird taucht der Befehl NICHT in der history auf. Der Befehl ist auch nicht über die „Pfeil hoch“ Tasten verfügbar.

$  cal

$ history

 826 [2018-02-08 19:25:05] date
 827 [2018-02-08 19:25:22] history
 828 [2018-02-08 19:37:18] top
 829 [2018-02-08 19:44:22] date
 830 [2018-02-08 19:50:23] history

 

Man beachte bei der Eingaben von „cal“ den Minimal größeren Abstand.

Dies kann sehr hilfreich sein wenn man aus irgendwelchen Gründen ein PW in der Kommandozeile eingeben möchte ohne das dieses in der Historie landet.

Ich habe versucht das selbe mit einer csh zu reproduzieren. Hat nicht funktioniert.

 

 

Diese Frage wurde bereits von Scott in seinem englischsprachigen Blog beantwortet. Ich gebe sie an dieser Stelle wieder, um nicht immer wieder danach suchen zu müssen.

Das Kommando lautet:

tcpdump -c 20 -s 0 -i eth1 -A host 192.168.1.1 and tcp port http

Die Parameter bedeuten:

  • -c 20: Beendet den Vorgang, nachdem 20 Pakete aufgezeichnet wurden.
  • -s 0: Die mitgeschnittenen Nutzdaten sollen ungekürzt wiedergegeben werden.
  • -i eth1: Zeichne nur Pakete an der Netzwerkschnittstelle eth1 auf.
  • -A: Gebe alle Pakete in ASCII aus.
  • host 192.168.1.1: Zeichne nur Pakete auf, die von Host 192.168.1.1 kommen.
  • and tcp port http: Zeichne nur HTTP-Pakete auf.

Ergänzt man den Befehl noch um -w DATEINAME wird die Aufzeichnung in eine Datei statt auf die Standardausgabe geschrieben.

Wer häufiger mit Git arbeitet und dort auf Merge-Konflikte stößt, hat bei größeren Konflikten keinen sonderlich großen Spaß diese aufzulösen. Häufig bietet es sich dabei an, ein Mergetool zu verwenden, der einem die Arbeit erleichtern soll. Einige Mergetools existieren für die Kommandozeile, andere auch als grafische Tools.

Kürzlich bin ich auf das kleine Tool „fac“ gestoßen, was kurz für „Fix All Commits“ steht. „fac“ ist ein in Go geschriebenes CUI, also ein Commandline User Interface, um Merge-Konflikte aufzulösen.

Das Schöne daran ist die einfache Nutzung und die übersichtliche Darstellung im Terminal, der zunächst erstmal nur die benötigten und relevanten Zeilen anzeigt. Zusätzliche Zeilen lassen sich allerdings mit wenigen Tastendrücken anzeigen.

Aussehen tut dies etwa so:

„fac“ ist in Go geschrieben und kann über go auch heruntergeladen werden:

$ go get github.com/mkchoi212/fac

Die Binärdatei liegt anschließend unter ~/go/bin/fac. Den Pfad sollte man dann entweder zu seiner $PATH Variable hinzufügen oder direkt aufrufen. Leider gibt es noch keine Unterstützung als Git Mergetool. Dazu existiert aber ein Issue.

Natürlich gibt es auch andere Mergetools, die man verwenden kann. Mir gefällt in diesem Fall die einfache Benutzung und die geringe Einstiegshürde, die das Tool mit sich bringt. Verbesserungspotenzial ist da natürlich auch da, da eine schönere Diff-Ansicht des Konfliktes begrüßenswert wäre.