Debian aufräumen - rc-Pakete mühelos mit meinem Python-Skript entfernen

Wenn Ihr Debian als Euer Betriebssystem verwendet, habt Ihr bestimmt schon einmal mit dem Befehl dpkg gearbeitet, um Pakete zu verwalten. Bei Debian, Ubuntu, etc. kommt es oft vor, dass Pakete mit dem Status „rc“ (removed and configuration files) auf Eurem System verbleiben und Platz beanspruchen. Das manuelle Entfernen dieser Pakete kann jedoch zeitaufwändig sein. In diesem Blog-Artikel stelle ich Euch ein von mir entwickeltes Python-Skript vor, das diesen Prozess automatisiert und vereinfacht.

Hintergrund

Wenn Ihr in Debian oder Ubuntu Pakete deinstalliert, bleiben in der Regel noch Paketbestandteile und Konfigurationsdateien zurück. Dass Reste vorhanden sind erkennt man am Paketstatus „rc“. Um solche Pakete zu identifizieren und zu entfernen, wird normalerweise der Befehl

dpkg -l | grep ^rc | awk {'print $2'} | xargs dpkg -P 

verwendet. Dieser Befehl filtert alle Pakete mit dem Status „rc“ aus der Liste der installierten Pakete und entfernt sie dann vollständig.

Das Python Skript

Mein Python-Skript vereinfacht diesen Vorgang und bietet einige zusätzliche Funktionen. Hier sind die Kernfunktionen des Skripts:

  1. Liste Pakete mit dem Status „rc“ auf
    Durch den Aufruf des Skripts ohne Argumente oder mit dem Argument -l könnt Ihr eine Liste der Pakete mit dem Status „rc“ anzeigen lassen:
    ./purgerc -l
    Ihr seht nun alle relevanten Pakete, die das Skript bereinigen kann.
  2. Entferne Pakete mit dem Status „rc“
    Durch den Aufruf des Skripts mit dem Argument -f werden alle Pakete mit dem Status „rc“ entfernt:
    ./purgerc -f
    Das Skript führt automatisch den Befehl
    dpkg -l | grep ^rc | awk {'print $2'} | xargs dpkg -P
    aus und entfernt die entsprechenden Pakete.
  3. Übersicht über entfernte Pakete
    Nach dem Entfernen gibt das Skript eine Übersicht über die entfernten Pakete aus:
    Packages removed successfully:
    package1
    package2
    ...
  4. Hilfemeldungen
    Durch den Aufruf des Skripts mit dem Argument -h oder -? erhaltet Ihr eine Hilfemeldung:
    ./purgerc -h

Verwendung und Sicherheit

Die Verwendung des Skripts erfolgt selbstverständlich auf eigene Gefahr!

Das Skript wurde unter Debian 12 entwickelt und setzt Python 3.7 voraus.

Um das Skript auszuführen, müsst Ihr sicherstellen, dass Ihr die erforderlichen Berechtigungen habt, Pakete zu entfernen. Dies wird normalerweise durch die Verwendung von sudo erreicht. Damit es von jedem beliebigen Verzeichnis aus aufgerufen werden kann, sollte es eventuell im Verzeichnis /usr/local/bin abgelegt werden.

Bitte beachtet, dass die Verwendung von shell=True bestimmte Sicherheitsrisiken mit sich bringen kann. In diesem Fall, da die Eingabe vom Benutzer nicht direkt in den Befehl eingefügt wird, sollte es jedoch in Ordnung sein. Wenn Ihr Euch dennoch Sorgen macht, könnt Ihr alternative Methoden wie die Verwendung von subprocess.Popen oder die Aufteilung des Befehls in separate Aufrufe in Betracht ziehen.

Mit diesem Python-Skript wird die Bereinigung von Debian-Paketen mit dem Status „rc“ einfacher und benutzerfreundlicher. Es bietet Euch eine klar strukturierte Möglichkeit, Pakete anzuzeigen, zu entfernen und eine Zusammenfassung der durchgeführten Aktionen zu erhalten. Verabschiedet Euch von komplexen Befehlen und automatisiert diesen Vorgang mit diesem nützlichen Skript

Das Skript „purgerc“

#!/usr/bin/env python3
import subprocess
import sys

def list_rc_packages():
    try:
        # Run dpkg command to list packages with status "rc"
        result = subprocess.run(['dpkg', '-l'], capture_output=True, text=True, check=True)
        lines = result.stdout.split('\n')
        rc_packages = [line.split()[1] for line in lines if line.startswith('rc')]
        
        if rc_packages:
            print("These packages can be purged:")
            print('\n'.join(rc_packages))
        else:
            print("No packages available to be purged.")
    except subprocess.CalledProcessError as e:
        print(f"Error: {e}")
        sys.exit(1)

def remove_rc_packages():
    try:
        # Run dpkg command to list packages with status "rc" and remove them
        result = subprocess.run('dpkg -l | grep "^rc" | awk \'{print $2}\' | xargs dpkg -P', capture_output=True, text=True, shell=True, check=False)
        if result.returncode == 0:
            removed_packages = result.stdout.strip().split('\n')
            print("Packages removed successfully:")
            print('\n'.join(removed_packages))
        else:
            print("No packages available to be purged.")
    except subprocess.CalledProcessError as e:
        print(f"Error: {e}")
        sys.exit(1)

def print_usage():
    print("Usage:")
    print("  purgerc             : List packages with status 'rc'")
    print("  purgerc -l          : List packages with status 'rc'")
    print("  purgerc -f          : Purge packages with status 'rc'")
    print("  purgerc -h or -?    : Show this usage message")

def main():
    if len(sys.argv) == 1:
        list_rc_packages()
    elif len(sys.argv) == 2:
        if sys.argv[1] == '-l':
            list_rc_packages()
        elif sys.argv[1] == '-f':
            remove_rc_packages()
        elif sys.argv[1] in ['-h', '-?']:
            print_usage()
        else:
            print("Invalid argument. Use -h or -? for usage.")
            sys.exit(1)
    else:
        print("Invalid number of arguments. Use -h or -? for usage.")
        sys.exit(1)

if __name__ == "__main__":
    main()

Eine eigene SSL Zertifizierungsstelle (Root CA) für die Nutzung im LAN erstellen - Teil II

Interne Zertifikate erzeugen

Im ersten Teil haben wir ein Root-Zertifikat für unsere eigene SSL Zertifizierungsstelle erzeugt. Wir sind nun in der Lage, nach Belieben SSL-Zertifikate zu erzeugen, denen unser Browser vertrauen wird (nachdem wir unsere Zertifizierungsstelle innerhalb unseres Netzwerks bekannt gemacht haben).
Wir werden uns nun Schritt für Schritt an die Erzeugung eines Zertifikates für einen Apache Webserver machen und uns ansehen, wie der Virtual Host konfiguriert werden muss.

Weiterlesen

Emotet Erkennung mit Icinga / Nagios und EmoCheck

Neulich wurde bei Heise (https://heise.de/-4652554) über ein interessantes Tool berichtet, mit dem geprüft werden kann, ob ein PC bereits mit der Schadsoftware „Emotet“ infiziert ist. Dies erledigt das Tool „EmoCheck“ (https://github.com/JPCERTCC/EmoCheck/releases) indem es den Rechner auf Prozesse untersucht, die typisch für eine Emotet-Infektion sind. In dem Artikel wird darauf hingewiesen, dass sich ein mit Emotet infizierter Rechner nicht zwangsläufig sofort auffällig verhält. In dem genannten Artikel heißt es: „[…] typischerweise vergehen zwischen der ersten Emotet-Infektion in einem Firmennetz und dem Verteilen des Erpressungs-Trojaners Ryuk ein bis zwei Wochen.“

Es gibt einige Diskussionen über die Funktionsweise dieses Tools. So regt sich einiges an Kritik am Umstand, dass EmoCheck nach statischen Prozessnamen sucht. Ich teile diese Bedenken dahingehend, dass Emotet seinen Prozessen jederzeit anderslautende Namen geben könnte. Allerdings bin ich der Meinung, dass dieses Werkzeug einen installierten Virenschutz sicherlich sinnvoll ergänzen kann und es in Anbetracht des doch erheblichen Schadenpotentials von Emotet sicherlich nicht schlecht ist, sich nur auf einen Prüfmechanismus zu verlassen.

In diesem Artikel beschreibe ich, wie man das Monitoringsystem Icinga bzw. Nagios in Verbindung mit EmoCheck nutzen kann um in einem Unternehmensnetz Emotet-Infektionen frühzeitig erkennen zu können und sich gegebenenfalls aktiv warnen zu lassen.

./libexec/check_emotet
#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;

binmode STDOUT, ":utf8";
use utf8;
use JSON;

use experimental qw( switch );
use feature qw(switch say);

# Declare infection pointer
my $infected = 0;
my $infected_host = "";
my $dir = '/opt/emocheck';

foreach my $fp (glob("$dir/*.json")){
        my $json;
        {
                local $/; # This enables 'slurp' mode
                open my $fh, "<", $fp;
                $json = <$fh>;
                close $fh;
        }
        my $data = decode_json($json);
        if ($data->{'is_infected'} eq 'yes'){
                # Infection found! Set $infected to 1 and set/concatenate affected hostnames delimited by '|'
                $infected = 1;
                if ($infected_host eq ""){
                        $infected_host = $data->{'hostname'};
                }else{
                        $infected_host .= "/" . $data->{'hostname'};
                }
        }
        move($fp, $dir. "/processed");
}

given ($infected) {
    chomp($infected);
    when ($infected lt '1') { print "OK - No infection found."; exit(0);      }
    when ($infected eq '1') { print "CRITICAL - One or more infections suspected. ($infected_host)"; exit(2); }
    default { print "UNKNOWN - $infected of disk space used."; exit(3); }
}

@echo off
.\emocheck_x64 /quiet /json /output \\icinga\emocheck

checkcommands.cfg
define command {
                command_name                          check_emotet
                command_line                          $USER1$/check_emotet
}

advanced_services.cfg
define service {
                service_description                   Check Emotet Infection
                max_check_attempts                    1
                first_notification_delay              0
                notification_interval                 0
                notification_options                  c,r
                notifications_enabled                 1
                event_handler_enabled                 1
                check_command                         check_emotet!
                check_period                          24x7
                notification_period                   24x7
                host_name                             icinga.mein.netz
                contact_groups                        +admins,ProductionAdmins
                use                                   generic-service
}

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"emocheck"="C:\\Program Files\\Emocheck\\emocheck_x64.exe /quiet /json /output \\\\icinga\\emocheck"

DHL Paketkasten wird eingestellt – der zweite Akt

Durch den Kommentar von Stefan B. zu meinem Blogeintrag DHL stellt Paketkasten ein (https://www.markjunghanns.de/index.php/2019/02/06/415/) war ich am Nachmittag des 09.08.2019 vorgewarnt, dass auch ich das von ihm erwähnte Schreiben der DHL in meinem Briefkasten vorfinden würde, sobald ich zuhause wäre. Ich weiß ja nicht, wie es anderen Leuten geht, aber ich erhalte unangenehme Post meist am Freitag. Seien es Behörden, negative Antworten auf Beschwerden oder eben auch von DHL. Wahrscheinlich ist der Gedanke hinter dieser Unart, dass sich der Empfänger bis zum nächsten Werktag (an dem diese Anstalten meist wieder telefonisch erreichbar sind) bestimmt abgeregt hat. Die Post/Politik möchte ja die 5-Tage-Woche bei der Briefzustellung einführen (https://www.sueddeutsche.de/wirtschaft/post-brieftraeger-samstag-1.4549240) – Gut, macht von mir aus eine Vier-Tage-Woche von Montag bis Donnerstag und bewahrt mich dadurch vor Sendungen die mich erzürnen und ich den Absender aber nicht mehr greifen kann, weil Wochenende. Okay, ein Gedanke so nebenbei…

Das Schreiben von DHL

Schreiben von DHL vom 07.08.2019
Schreiben von DHL vom 07.08.2019

Meine Meinung

Okay, nun wird das wahr, was ich für mich schon im Februar vorhergesehen habe. In meinem Blogeintrag DHL Paketkasten Stromversorgung auf Solarstrom umrüsten (https://www.markjunghanns.de/index.php/2019/05/05/dhl-paketkasten-stromversorgung-auf-solarstrom-umruesten/) habe ich ausführlich erklärt, welche Vorzüge des Paketkastenangebotes uns dazu bewogen haben, das Angebot anzunehmen. Ich möchte mir deshalb an dieser Stelle die erneute Darstellung sparen.

Die von DHL genannten Punkte möchte ich nachfolgend kommentieren.

  • Die kostenfreie Abholung von Paketen aus dem Paketkasten wird […] eingestellt. Als Alternative bieten wir Ihnen die Nutzung des Services Mitnahme bei Gelegenheit, bei dem Sie dem Zusteller frankierte Pakete mitgeben können, wenn noch Platz im Fahrzeug ist.
    Für mich war die kostenfreie Abholung ein entscheidendes Argument für die Anschaffung des Paketkastens. Und es war Teil des Deals mit der Post… Nun soll ich also den ganzen Tag die Straße im Auge behalten um dann, so Gott will ein DHL-Fahrzeug irgendwo in der Nachbarschaft anhält, mein Paket abgeben zu können? Wenn ich für solch einen Unsinn Zeit hätte, gäbe es hier keinen Paketkasten. Dann könnte ich auch zur Post laufen. Nun hat aber unsere Postfiliale Öffnungszeiten, die nach meiner Meinung fast schon unverschämt sind. Als Berufstätige ist es uns nicht ohne Verrenkungen möglich, dort Pakete zum Versand abzugeben.
    Nun ist es ja aber auch nicht so, dass im Zuge der Einstellung des Paketkastens per Se auch die Leistung „Abholung aus dem Paketkasten“ abgeschafft würde. Nein, vielmehr soll ich ab dem 01.10.2019 EUR 3.- pro Abholung bezahlen, möchte ich weiterhin in den Genuss der versprochenen Leistung kommen. Mit solchen Aktionen verhöhnt man nicht nur seine Kunden, denen man zuvor noch sein Bedauern für die Einstellung des Paketkastens ausgedrückt hat. Ich finde, dass der Ausdruck des Bedauerns aufrichtiger wäre, wenn man den durch die Einstellung des Paketkastens ohnehin schon geschädigten Kunden zumindest die technisch ja mögliche Abholung von Paketen weiterhin kostenlos anbieten würde.
  • „Die Pflege Ihrer Daten wie die Aktivierung von Paketkästen ober Mitnutzer erfolgt jetzt telefonisch […].“
    Meiner Meinung nach ist das reine Schikane der Bestandskunden. Wurde die Online-Infrastruktur des DHL Paketkastens vom Blitz getroffen oder was ist los? Warum kann man die Online-Dienste nicht bis zum 30.09.2019 (zu diesem Datum gleich mehr) laufen lassen? Ach ja, der Vorstandsvorsitzende der Post DHL Group, Herr Appel, kann die Server ja nun für den neuesten Coup gut brauchen- „Ab 2020 gibt es Pakete auf die Viertelstunde genau“ (https://rp-online.de/wirtschaft/unternehmen/post-chef-im-interview-ab-2020-gibt-es-pakete-auf-die-viertelstunde-genau_aid-43228807). Mir bringt diese „Verbesserung“ gar nichts. Ich finde das schwachsinnig, überflüssig, frage mich wer um alles in der Welt so etwas braucht, und ziehe persönlich aus so einem „Produkt“ keinerlei Mehrwert.
  • „Bitte denken Sie daran, Ihren Paketkasten nach Erhalt umgehend zu aktivieren, […] . Auch wenn Ihr Paketkasten jetzt an einer anderen Adresse steht, sollten Sie das sobald möglich melden. Falls noch nicht geschehen können Sie das bis 30.09.2019 nachholen. Danach ist keine Aktivierung oder Umzüge mehr möglich.“
    Der 30.09.2019 ist somit also das technische Ende des Paketkastens. Interessant finde ich vor allem, was hier nicht steht. Was mache ich nach dem 30.09.2019 wenn ich ein Problem habe? Wenn beispielsweise der Öffnungsmechanismus den Geist aufgibt? Wo bekomme ich einen neuen Schlüsselchip (Volksmund: Transponder) her, wenn meiner kaputt oder verloren geht? Immerhin habe ich das „große“ Modell, bei dem neben dem Paketkasten auch noch der Hausbriefkasten integriert ist. Ohne Transponder oder funktionierende Elektronik komme ich nicht an meine Briefpost. Und damit mich keiner missversteht – es geht hier nicht um „kostenlos“, es geht mir um Verfügbarkeit.
    Und an wen wende ich mich, wenn der Zusteller mal wieder nicht blickt, wie der Paketkasten funktioniert? Bisher genügte ein Anruf bei DHL und der Zusteller wurde (wirklich erfolgreich!) geschult.
  • „Der Betrieb der Paketkasten-App wird ab sofort eingestellt. […]“
    Okay, das nehme ich nicht als wirklichen Verlust wahr. Der Bluetooth-Stack des Paketkastens ist eh schrottig, das Öffnen mit dem Transponder fand ich schon immer wesentlich komfortabler. Schade ist hingegen der Wegfall der Abholungsbeauftragung mit einem einzigen Klick. Das hat immer zuverlässig funktioniert. Aber ja, da ich lieber verflucht sein soll als dass ich diesem Unternehmen EUR 3,- für eine Abholung zahlen werden, brauche ich das ja auch nicht mehr. Selbstverständlich zahle ich für Dienstleistungen, aber nicht, wenn einseitig Versprechen gebrochen und meine Investition durch dieses Unternehmen vernichtet wurde.

Und nun?

Mal sehen, wie es weitergeht. Heute rief mich ein Leser meines Blogs an um sich mit mir auszutauschen. Ähnliche Empörung wie bei mir, viel Geld (über EUR 500,-) investiert und nun wird keine der auch für ihn entscheidenden Dienste mehr angeboten. Wir werden uns weiter austauschen, vielleicht wollen sich ja auch noch andere anschließen.

Sobald es meine Zeit erlaubt werde ich erforschen, ob man den DHL Paketkasten irgendwie in Richtung ParcelLock umrüsten kann oder ob es vielleicht eine andere Lösung gibt, mit der zumindest Hermes oder DPD Pakete im Paketkasten abstellen kann.

Auch wenn sicher alles durch irgendwelches Kleingedruckte gedeckt sein sollte, fühle ich mich dennoch betrogen. Frecherweise beginnt der letzte Absatz des Briefs von DHL mit folgendem Satz:
„Vielen Dank für das Vertrauen, dass Sie uns mit dem Kauf Ihres Paketkastens entgegengebracht haben.“

Ich kann DHL nur entgegnen: „Vielen Dank auch für gar nix. Toll, dass Sie mit dem von mir entgegengebrachte Vertrauen nicht angemessen umgegangen sind und es missbraucht haben. Das hilft mir in Zukunft bei der Orientierung, welche Dienste ich von Ihnen in Anspruch nehme – nämlich nichts mehr was über den sporadischen Versand einer Amazon-Retoure hinausgeht.“

DHL Paketkasten – Stromversorgung auf Solarstrom umrüsten

In meinem Artikel DHL Paketkasten – Stromversorgung umrüsten habe ich beschrieben, wie ich unseren Paketkasten umgerüstet habe. Das Ziel war, von den teuren, kurzlebigen Lithium-Batterien auf vermeintlich langlebige und günstige Blockbatterien umzurüsten. Blockbatterien kommen oft im Baugewerbe zum Einsatz und halten normalerweise auch bei niedrigen Temperaturen sehr lange.

Leider war das Ergebnis im Zusammenhang mit dem Paketkasten sehr ernüchternd. Die Batterie hielt auch nicht wesentlich länger als ein Satz Lithium Batterien. Natürlich sind die Blockbatterien etwas günstiger, allerdings bleibt ja immer noch das Öffnen des Paketkastens zum Austausch der Batterien und es ist überaus lästig, wenn die Batterie genau dann aufgibt, wenn der Zusteller versucht, den Paketkasten zu öffnen…

Nachdem ich von einem Freund ein 12 V Solarpanel mit einer Leistung von 10 w geschenkt bekommen hatte, entschied ich mich, dem ganzen Spuk nun mit Sonnenenergie ein Ende zu bereiten. Was ich noch kaufen musste war ein 6V Akku und ein Laderegler. Für diese beiden Teile musste ich ca. 25 EUR investieren.

Das Solarpanel montierte ich auf meinem Carport, führte ein Kabel in den oberen Bereich des Paketkastens und schloss den Laderegler, den Akku und den Paketkasten an. Seit über drei Monaten läuft das ganze nun schon und laut Paketkasten-App ist der Akku immer bei knapp 100% Ladung.

Bilder folgen in Kürze.

DHL stellt Paketkasten ein

Am 03.02.2019 war bei heise.de zu erfahren, dass DHL das Produkt „Paketkasten“ eingestellt hat. Wir besitzen seit 2015 einen Paketkasten und sind, von ein paar Kleinigkeiten abgesehen, ganz zufrieden. Mich hat die Meldung unangenehm überrascht. Der Paketkasten ist im August 2018 in unser Eigentum übergegangen, dennoch interessiert es mich natürlich, wie es nun weitergeht. Wird DHL weiterhin Sendungen in den Kasten einstellen? Können auch künftig Sendungen mit dem Paketkasten versendet werden?

Ich habe DHL meine Fragen per Email gesendet und heute diese Antwort erhalten. Ich bin gespannt, wie es sich weiter entwickeln wird.

Guten Tag, Herr Junghanns,

vielen Dank für Ihre Nachricht.

Mitte 2012 haben wir mit ersten Tests für eine private Paketempfangsbox begonnen. Im Jahr 2013 erfolgten verschiedene Pilotprojekte, bis im Mai 2014 unser DHL Paketkasten deutschlandweit eingeführt wurde. Diese Produkteinführung stieß in der Anfangszeit auf großes Interesse, sowohl in der Öffentlichkeit als auch bei unseren Kunden. Auch der Logistikmarkt erhielt dadurch neue Impulse, wie die Reaktionen von Wettbewerbern zeigten.

In der Bestrebung um eine Vereinheitlichung verschiedener Systeme privater Empfangsboxen wurde eine DIN-Arbeitsgruppe ins Leben gerufen, jedoch hat sich auch vier Jahre nach dem Marktstart von DHL keine Lösung durchgesetzt.

Leider ist die Entwicklung privater Paketempfangsboxen im gesamten Markt hinter den Erwartungen zurück geblieben. Aus diesem Grund wurde der Verkauf von Paketkästen für Einfamilienhäuser eingestellt. Wie mit den vorhandenen Paketkästen umgegangen wird, ist derzeit in Prüfung. Sollten sich aus der Prüfung Veränderungen für die aktuellen Besitzer und Nutzer eines Paketkastens ergeben, werden wir diese selbstverständlich unmittelbar informieren.

Wir bieten neben der klassischen Haustürzustellung auch weiterhin eine große Anzahl von Empfangsoptionen für Paketsendungen an, wie z.B. die Packstation, die Zustellung in die Postfiliale oder die Services Wunschort, Wunschtag und/oder Wunschzeit. Damit wird auch zukünftig jedes DHL-Paket schnell und kundenindividuell zugestellt.

Beste Grüße

Jane Olson

Ihr Kundenservice Paketkasten

DHL Paket GmbH https://www.dhl.de/meinkundenservice

DHL Paket GmbH; Sitz Bonn; Registergericht Bonn; HRB 19565

Geschäftsführung: Norman Chmiel, Martin Linde, Dr. Ole Nordhoff, Dr. Christian Schawel

Vorsitzender des Aufsichtsrates: Uwe Brinks

Dies ist eine Nachricht der DHL Paket GmbH und kann vertrauliche, firmeninterne Informationen enthalten. Sie ist ausschließlich für die oben adressierten Empfänger bestimmt. Sind Sie nicht der beabsichtigte Empfänger, bitten wir Sie, den Sender zu informieren und die Nachricht sowie deren Anhänge zu löschen. Unzulässige Veröffentlichungen, Verwendungen, Verbreitung, Weiterleitung sowie das Drucken oder Kopieren dieser Mail und ihrer verknüpften Anhänge sind strikt untersagt.

Email des Kundenservice Paketkasten vom 06.02.2019


Suchgeschwindigkeit in Roundcube erhöhen

Mal so nebenbei eine schnelle Lösung für ein nerviges Problem mit Roundcube.

Ich persönlich nutze hauptsächlich den Roundcube Webmailer. Er ist sehr flexibel, überall nutzbar und „eigentlich“ auch recht schnell. Mein Postfach habe ich mittels Ordnern strukturiert, die Datenmenge ist mit ca. 5 GB beachtlich.

Warum aber „eigentlich“ schnell? Sofern man Mails liest, schreibt und versendet ist der Webmailer wahrlich schnell. Benutzt man jedoch die Suchfunktion von Roundcube ist es mit der Geschwindigkeit schnell vorbei. Dies ging bei meinen System soweit, dass der Apache Webserver gelegentlich einen Fehler 500 zurückgab. Die Ursache war, dass der entsprechende PHP-Prozess in ein Timeout gelaufen war.

Wenn ich etwas such, dann erledigte ich dies bislang zumeist über den Mozilla Thunderbird Mailclient. Da dieser einen lokalen Suchindex aufbaut, bekommt man hier extrem schnell die gewünschten Suchergebnisse präsentiert. Was zuhause gut funktioniert, war mit Roundcube eben bisher ein wirkliches Problem.

Eine logische Erklärung brachte mir ein Beitrag im Plesk-Forum. Sobald man in Dovecot die Volltextsuche aktiviert, läuft die Suche mit bisher ungeahnter Geschwindigkeit. Hier die Lösung:

Auf dem Mailserver die Datei /etc/dovecot/conf.d/99-fts.conf anlegen und mit folgendem Inhalt befüllen:

protocol imap {
mail_plugins = "quota imap_quota fts fts_squat"
}
plugin {
fts = squat
fts_squat = partial=4 full=10
fts_autoindex = yes
}

Danach den Dovecot-Prozess neu starten, das Mail-Log sicherheitshalber auf Fehler untersuchen und die nun deutlich verbesserte Suchgeschwindigkeit genießen.

Der Beitrag, dem ich diese Information entnommen habe, ist unter der URL https://support.plesk.com/hc/en-us/articles/115000532574-The-search-speed-is-slow-in-Roundcube zu finden.

DHL Paketkasten – Stromversorgung umrüsten

Warum wir uns einen DHL Paketkasten angeschafft haben

2015 bezogen wir unser neues Einfamilienhaus. Bei dieser Gelegenheit machten wir uns Gedanken, welche Art Briefkasten wir anschaffen wollten. Da wir häufig im Internetversandhandel bestellen, war das Angebot „Paketkasten“ der DHL interessant für uns. Wir entschieden uns für das Modell „Paketkasten Modern“ in der XL-Variante als Standgerät (wird mit dem Boden verschraubt) mit Briefkasten.

Der Deal sieht folgendermaßen aus:
Man schließt mit DHL einen Mietvertrag über drei Jahre zu monatlich (in unserem Fall) ca. 10,- EUR. Nach Ablauf der drei Jahre würde DHL mir den Paketkasten für 1,- EUR pro Monat zur weiteren Nutzung überlassen. So zumindest wurde mir das auf telefonische Rückfrage mitgeteilt. Inzwischen erhielt ich ein Schreiben, mit welchem mir mitgeteilt wurde, dass der Paketkasten mit Ablauf der drei Jahre in unser Eigentum übergehen würde und ab dann keine Kosten mehr entstehen würden. Erfreulich, das hatte ich nicht erwartet!

Was habe ich nun davon, abgesehen von einem recht ansehnlichen und voluminösen Briefkasten der auch Pakete empfangen kann? Ein interessanter Aspekt ist, dass man darüber auch Pakete und Päckchen versenden kann. Über das Onlineportal der DHL meldet man die Abholung einer Sendung am Paketkasten an. Porto kann man bei dieser Gelegenheit auch kaufen. Die Sendung wird dann in den Paketkasten eingelegt und dann am Wunschtag kostenlos von DHL abgeholt. Super Sache, spart man sich doch so einiges an Lauferei wenn man häufig etwas zu Versenden hat.

Weiterlesen

Raspberry Pi – Kernel Upgraden/Downgraden

Wie in meinem Artikel Tvheadend – Aussetzer beim Streaming erwähnt, kann es unter bestimmten Umständen notwendig sein, den Raspberry Pi mit einem anderen, als dem in der jeweiligen Raspbian-Version enthaltenen Kernel zu betreiben. Bekanntschaft habe ich mit diesem Problem bereits im Zusammenhang mit Tvheadend und Node-Red gemacht.

Ich werde nun beschreiben, wie der Kernel up- oder downgegraded werden kann. Hierfür setze ich voraus, dass der Raspberry Pi unter Raspbian läuft. Zunächst sollte man (sofern noch nicht geschehen) herausfinden, welcher Kernel aktuell läuft. Mit dem Befehl

uname -r

wird die momentan laufende Kernel-Version angezeigt. In meinem Fall war dies die 4.9.70-v7+.

Möchte man nun ein Downgrade auf die Version 4.4.50-v7+ durchführen, muss man sich den git-Hash des entsprechenden Commits heraussuchen. Dies erledigt man im Git-Repository von Hexxeh unter der Adresse https://github.com/Hexxeh/rpi-firmware . Mit einem Klick auf den Knopf „<soundsoviele> Commits“ bekommt man eine Übersicht über alle vorhandenen Kernel-Versionen angezeigt.

Nun wird bis zur gewünschten Version herunter gescrollt. Relevant sind hier die Einträge „kernel: bump to x.x.xx“. Im rechten Bereich der Ansicht können wir den entsprechenden Hash in die Zwischenablage nehmen.

Um nun die eigentliche Installation der gewünschten Version vorzunehmen gehen wir wieder in die Console und geben nun (beispielsweise für die 4.4.50) folgenden Befehl ein:

rpi-update 52241088c1da59a359110d39c1875cda56496764

Nun läuft die Installation an, die den Kernel, die Kernelmodule und die Firmware-Files installiert.

Im Anschluß muss der Raspberry Pi neu gebootet werden.

 

 

Tvheadend – Aussetzer beim Streaming

Wie man Probleme mit Aussetzern bei Tvheadend bei der Nutzung auf dem Raspberry Pi löst, erkläre ich in diesem Beitrag. Ich werde hier keine Anleitung zur Einrichtung von LibreELEC, Kodi, Tvheadend, etc. bereitstellen, da das Internet voll solcher Anleitungen ist.

Vor einem guten Jahr habe ich meinen konventionellen SAT-Receiver, eine „Volksbox“, in Rente geschickt. Sie lief mir nicht stabil genug und war mir im Handling etwas, naja, unbequem. Ich bin verwöhnt von einer DreamBox 7025, die ich jahrelang genutzt habe.LibreELEC

Länger schon wollte ich mich mit Kodi beschäftigen – einem Mediacenter für Fernsehen und so ziemlich alle anderen medialen Anforderungen, die man sich vorstellen kann. Mit LibreELEC (https://libreelec.tv/) habe ich eine Lösung gefunden, die man nur auf die SD-Karte packen muss, diese Karte in den Raspberry Pi stecken, booten und los geht’s…

Einen geeigneten Raspberry Pi hatte ich zur gleichen Zeit zu einem guten Preis als Bundle (Raspberry + Gehäuse + Netzteil + SD-Karte) irgendwo im Netz gefunden und bestellt.

Möchte man nur Filme, die man auf einem NAS liegen hat, ansehen oder Online-Mediatheken diverser Fernsehsender nutzen, dann muss man nur noch die entsprechenden „Apps“ im LibreELEC-Image installieren und kann dann sofort diese Dienste nutzen. Möchte man zusätzlich Satelliten-TV nutzen, wird es etwas komplizierter, da man nun einen SAT-Receiver dazu bringen muss, den jeweiligen per Kodi gewählten Sender ins Netzwerk zu streamen.

Aufbau

Bei mir kommt folgende Hardware zum Einsatz:

  1. LG 42″ Fernseher mit u.A. HDMI-Anschluss
  2. Ein Raspberry Pi 3 mit 16 GB SD-Karte (libreELEC installiert), angeschlossen am Fernseher
  3. Ein Raspberry Pi 2 als zentraler Server für interne NextCloud, DHCP, DNS, Node-RED-Host, etc.
  4. Ein an den zentralen Raspberry Pi 2 angeschlossener USB-Satreceiver (TechnoTrend TT-connect S2-4600), Tvheadend

Tvheadend steuert den Satreceiver, stellt also den vom sog. PVR-Client auf der LibreELEC-Maschine angeforderten Transponder ein und streamt somit das entsprechende Programm über’s LAN zu Kodi schickt. Nach einem Problem mit der SD-Karte am zentralen Raspberry Pi 2 habe ich diese Maschine neu installiert. Fortan hatte ich Probleme – das Fernsehbild zeigte oft Klötzchen, blieb hängen, schien puffern zu müssen und hatte Ton-Ausfälle. Im Syslog fand ich plötzlich folgende Meldungen:

[codeblocks name=’codeblock_0′]

Diese „Continuity Counter Errors“ bereiteten mir wirklich Kopfzerbrechen. Die Last auf dem zentralen RPI hatte sich durch die Neuinstallation nicht vergrößert. Da ich die Schüssel nur mit einem sehr rudimentären Messgerät ausgerichtet hatte, bestellte ich sogar einen Fachbetrieb für SAT-Installationen um nachzumessen. Es sei alles perfekt eingestellt, bestätigte der Techniker, an der Ausrichtung der Schüssel konnte es also nicht liegen. Heute konnte ich nun das Problem eingrenzen und schließlich erfolgreich lösen.

Nach der Neuinstallation lief mein zentraler RPI mit dem Kernel v4.9.35. Unter der URL https://forum.libreelec.tv/thread/4235-dvb-issue-since-le-switched-to-kernel-4-9-x/?pageNo=2 erhielt ich den finalen Hinweis. Es handelt sich um ein bekanntes Fehlerbild, dass Tvheadend unter dem v4.9-Kernel dieses Verhalten zeigt. Ich habe nun den Kernel, wie in der genannten URL beschrieben, auf die v4.4 zurückgedreht, wodurch es nun wieder wunderbar funktioniert.

Node-RED – Installation unter Ubuntu

Was ist Node-RED?

Node-RED LogoNode-RED ist ein grafisches Entwicklungswerkzeug, dass vor allem von Leuten benutzt wird, die sich mit IoT (Internet of Things – Internet der Dinge) auseinandersetzen. In erster Linie kann Node-RED dafür genutzt werden, Geräte (sowohl netzwerkfähiges Equipment als auch Geräte, die seriell, per Bluetooth, 1-wire, i²c, etc. angebunden sind) miteinander zu vernetzen, Daten per Sensor oder aus Cloud-Diensten zu empfangen, auszuwerten und weiter zu verarbeiten. Node-RED bietet hierfür eine hervorragende grafische Oberfläche an um dies visuell zu erledigen. Hochinteressant ist die Möglichkeit, auf Ereignisse, die von bzw. durch ein angeschlossenes Gerät (oder einen eingebundenen Dienst) erzeugt werden, eine weitere Aktion auslösen zu können.

Weiterlesen