Mein Raspi hängt sich immer wieder auf (Flightradar24)

  • So kommst du an die Uhrzeit wann der Ping gestartet wird.

    diese 0,0 und 2,1 etc kommen von dem print() das noch ausversehen im Code enthalten war.

    Daran ist zu sehen: Erste Zahl: Ergebnis vom ping (0=Ziel ist erreichbar, alle anderen Zahlen = Ziel nicht erreichbar)

    Die 2. Zahl gibt an wieviele Durchläufe schon gescheitert sind, bei größer gleich 5 wird neu gestartet. Sobald das Ziel wieder erreichbar ist, wird die 2. Zahl (fehlercounter) wieder auf 0 gesetzt.

    Das print hab ich bei dem Code jetzt mal entfernt, wenn gewünscht kannst du es dir ja wieder rein schreiben.

    Ah, merci.

    Ich hab das print für den Status mal dringelassen und das Skript auf der Konsole gestartet. Da kommt die Uhrzeit, dann die Ausgabe von ping und dann der Status.

    Im Logfile kommt aber immer nur die Ausgabe von ping. Und im bisherigen Logfile war das auch so, und dann auf einmal ganz viele Zeilen hintereinander mit dem Status. Was ist da los?

    In der crontab von root habe ich drinstehen:

    Code
    @reboot python3 /home/pi/ping-router.py >>/var/log/ping-router.log

    Wo ist der Fehler?

    Edit: Kann ich das denn nicht auch in die systemweite crontab reinschreiben?

    Edit2: Ich glaube, ich weiß jetzt den Grund für das Logfile-Problem. Ich kenne das von Perl. Da muss man die Ausgabepufferung abschalten, damit jede Ausgabe sofort geschrieben wird. Nur weiß ich nicht, wie das in Python geht ...

    Einmal editiert, zuletzt von robo (17. August 2018 um 12:29)

  • Mein Raspi hängt sich immer wieder auf (Flightradar24)? Schau mal ob du hier fündig wirst!

  • Jetzt hat sich das gerade überschnitten, ich habe meinen Post nochmal editiert. Man muss die Ausgabepufferung ausschalten, in Perl geht das mit $|=1, aber wie geht das in Python?

    Edit: Hab's selber gefunden: python3 -u

    Einmal editiert, zuletzt von robo (17. August 2018 um 12:44)

  • Man muss die Ausgabepufferung ausschalten, in Perl geht das mit $|=1, aber wie geht das in Python?

    Da muss ich jetzt ohne zu googeln auch passen.

    Die schönere Lösung finde ich ist aber wie folgt:

    Ausgabeumleitung kannst du nach /dev/null schicken, das Skript loggt jetzt selbst mit, Log wird an dem Ort angelegt wo sich auch das Skript befindet

  • Die schönere Lösung finde ich ist aber wie folgt:

    Hammer! THX!

    Allerdings hat sich da ein Fehler eingeschlichen. Bei write_zustand sind die Ausgaben vertauscht, hab das aber schon umgedreht.

    Mal schaun, ob ich dem Problem so auf die Schliche komme ... ansonsten gab's ja hier noch andere Tips, die ich dann ausprobieren kann ...

  • Allerdings hat sich da ein Fehler eingeschlichen. Bei write_zustand sind die Ausgaben vertauscht,

    Vertauscht nicht, aber ein Fehler trotzdem, ich darf hier natürlich nicht auf True oder False prüfen sondern:

    Python
    def write_zustand(status, fehlercounter):
        if status == 0:
            LOGGER.info("Ziel erreichbar")
        else:
            LOGGER.info("Ziel nicht erreichbar, Fehlerdurchlauf {} von 5".format(fehlercounter))

    So muss das ganze aussehen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!