Problem mit http in script

  • Hallo,

    mein scrip kann 12-24h durchlaufen und plötzlich sehe ich mit ps aux das der Pi neu gebootet hat.

    Systemd, Restart= always, restart zwar das script automatisch wieder, aber ich möchte gern wissen warum es solange läuft und dann plötzlich dieser Fehler kommt.

    Das scrip läuft mit einer while True: Schleife alle 60 sec. 1x durch. und logged in ein log file.

    Fehler:

    Auszug aus script:

  • Der Service ist neu gestartet, aber der Pi hat auch neu gebootet. In ps aux habe ich das gesehen denn alle scripte hatten eine neue Startzeit von 05 .18h.

    Was zuerst war kann ich nicht mehr nachvollziehen.

    Läuft über Wlan, Fritzbox.

    Problem besteht schon seit einigen Wochen, komme aber einfach nicht weiter.

    Edited once, last by gwaag (November 22, 2023 at 6:39 AM).

  • Was zuerst war kann ich nicht mehr nachvollziehen.

    Doch das sollte schon möglich sein. Vergleiche aus dem Log, die Uhrzeit der ersten Fehlermeldungszeile mit der Uhrzeit aus:

    Code
    uptime -s

    auf dem PI.

    EDIT:

    Wenn es nicht an der Stromversorgung liegt, dann teste (temporär) mit statischen arp-cache-Eintragungen (arp -av) im PI, für die FritzBox und für die Geräte die auf dem Port 80 erreicht werden sollen.

    Zusätzlich mit 3 cronjobs (minütliche Ausführung) für root, im PI:

    Code
    * *    * * *    root    /usr/bin/arping -q -c 2 -w 2 -b -f -I wlan0 192.168.0.1 > /dev/null 2>&1
    * *    * * *    root    /usr/bin/nping --quiet -c 1 --tcp --flags syn -g 12343 -p 80 192.168.0.150 > /dev/null 2>&1
    * *    * * *    root    /usr/bin/nping --quiet -c 1 --tcp --flags syn -g 12344 -p 80 192.168.0.151 > /dev/null 2>&1

    arping aus iputils-arping. Die Befehle vorher in der Kommandozeile, ohne -q bzw. ohne --quiet und ohne Umleitung nach /dev/null, testen.

    BTW: Warum hast Du das "sleep 30" in der service-unit?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

    Edited once, last by rpi444 (November 22, 2023 at 8:01 AM).

  • Watchdog hat kein log file, wo man sehen könnte ob der watchdog neu gebootet hat.

    Warum benutzt Du watchdog (welchen)? Wie sind die Ausgaben von:

    Code
    ls -la /dev/watchdog*
    apt policy watchdog

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Hallo,

    die Fehlermeldung ist doch klar: keine verfügbare Verbindung ins Netzwerk -> dann werfen Zeilen 23 und 32 halt einen Fehler. Den kann man aber gezielt abfangen und dann damit umgehen.

    Zum Auszug vom Skript:

    * Zeile 18 ist schräg und benutzt eine irreführende Nomenklatur. `always_true` kein Bool'scher Wert und auch kein Bit, sondern ein Integer. Bei `always_true` würde man was wie `always_true = True` erwarten. Später im Code vergleichst du ja auch gegen einen anderen Integer.

    * Die Zeilen 27 und 36 sind eigentlich überflüssig, die Negierung des Werts kannst du auch später ab Zeile 41 machen. Wenn wenn du negieren willst, dann wäre IMHO `Aus150 = not Ein150` sinnvoller. BTW: Variablennamen schreibt man in Python per Konvention klein_mit_unterstrich.

    * Die Klammer in Zeile 26 und 35 sind überflüssig.

    * Die datetime und time Importe sind doppelt.

    Die Service Unit hat multiple Fehler. Fehler nicht im Sinne von, dass die nicht läuft, sondern das Quatsch drin steht oder Sachen an der falschen Stelle:

    Code
    [Unit]
    Description=WP-Steuerung
    After=multi-user.target
    Wants=network-online.target
    After=network.target network-online.target
    StartLimitIntervalSec=300
    StartLimitBurst=5

    `After=mulit-user.target` ist Quatsch in der `[Unit]` Sektion. Später steht in der der Unit - richtigerweise - `WantedBy=multi-user.target` Letzteres besagt, dass deine Unit im Rahmen des Erreichens des multi-user Targets geladen werden soll - dann kann die Unit ja wohl schlecht _nach_ dem multi-user Target geladen werden.

    Die `Wants` und die `After` Zeile widersprechen sich. In der `After` Zeile ist ein Widerspruch, weil du zwei Targets angibst, die aufeinander aufbauen. Wenn dein Skript einen stehende Netzwerkverbindung braucht, dann ist `After=network-online.target` die richtige Direktive.

    Was soll die Zeile `ExecStartPre=/bin/sleep 30`, also warum willst du den Start nochmals um 30 Sekunden verzögern?

    Gruß, noisefloor

  • pi@solaranzeige:~/th $ ls -la /dev/watchdog*

    crw------- 1 root root 10, 130 Nov 22 07:17 /dev/watchdog

    crw------- 1 root root 250, 0 Nov 22 07:17 /dev/watchdog0

    pi@solaranzeige:~/th $ apt policy watchdog

    watchdog:

    Installiert: 5.15-2

    Installationskandidat: 5.15-2

    Versionstabelle:

    *** 5.15-2 500

    500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages

    100 /var/lib/dpkg/status

    noisefloor

    die Unit werde ich korrigieren, Danke.

    Da es vor Wochen manchmal nach dem booten, sofort einen Fehlereintrag von Beitrag 1 gegeben hat, dachte ich mir das Netzwerk ist doch noch nicht verbunden, seit ich die 30s Verzögerung habe, kommt diese Meldung nicht mehr nach dem Booten, aber jetzt 1-2 x am Tag.


    Edited once, last by gwaag (November 22, 2023 at 8:24 AM).

  • pi@solaranzeige:~/th $ apt policy watchdog

    watchdog:

    Installiert: 5.15-2

    Installationskandidat: 5.15-2

    Hast Du den software-watchdog (evtl. absichtlich) so konfiguriert, dass er kein logging macht, wenn der Watchdog aktiv (getriggert) wird?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Habe ihn jetzt aber deaktiviert um den auszuschliessen.

    Oder aktiviert lassen und so konfigurieren, dass er in eine Log-Datei schreibt (wenn er tätig wird bzw. den PI rebootet).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Beim ersten Befehl kommt ein Fehler??

    Wenn denn das im cron laueft, was sehe ich dann? nach ein par min /stunden und wo?

  • Beim ersten Befehl kommt ein Fehler??

    Code
    which arping

    und wenn keine Ausgabe, dann:

    Code
    sudo apt install iputils-arping
    which arping

    Wenn denn das im cron laueft, was sehe ich dann? nach ein par min /stunden und wo?

    Sehen tut man so nichts. Es geht nur um die Auswirkungen auf eine stabile Wlan-Verbindung (zwischen PI und Router) bzw. um die zuverlässige Erreichbarkeit der Clients auf dem dst-TCP-Port 80.

    Wenn Du mal doch was sehen willst, dann auf dem PI mit:

    Code
    sudo tcpdump -c 30 -vvveni wlan0 arp and host 192.168.0.1
    sudo tcpdump -c 50 -vvveni wlan0 port 80 and 'tcp[13] & 2!=0'

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Wo sehe ich jetzt warum er gebootet hat?

    Steht etwas in "last"? (die letzten Einträge stehen oben, als die Datei mittels "head" oder "less" filtern)

    Und dann schau mal nach, was du im vorletzten Eintrag von journalctl --list-boots findest.

    Dieses Eintrag kannst du dann mit journalctl -b {num} -n

    {num} ist die lange Zahl, "-n" liefert die Anzahl der Zeilen, die gezeigt werden. (10 ist der Default-Wert)

    Lässt du das weg, siehst du alles vom starten dieses Eintrags bis zum Ende, und das sind sehr viele Zeilen ;)

    Computer ..... grrrrrr

  • War fast ganzen Tag weg.

    Letzter reboot 9.10h.

    rpi444

    Mit dem nachinstallieren von

    Code
    iputils-arping

    geht jetzt. Werde die 3 mal die ganze Nacht per cron laufen lassen.

    Code
    pi@solaranzeige:~/th $ /usr/bin/arping  -c 2 -w 2 -b -f -I wlan0 192.168.0.1
    ARPING 192.168.0.1 from 192.168.0.29 wlan0
    Unicast reply from 192.168.0.1 [3C:37:12:B3:0F:0B]  5.056ms
    Sent 1 probes (1 broadcast(s))
    Received 1 response(s)

    hyle

    Nein es gib zu dieser Zeit keinen Eintrag.

    Wo in /var/log/ , kann ich ev. sehen warum er reboot gemacht hat?

  • ... warum er reboot gemacht hat?

    Welchen PI hast Du? Wie sind die Ausgaben von:

    Code
    free -m
    df -h
    sudo smem -t -p

    ? Wie ist der Speicher- und CPU-Verbrauch von deinem Script?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Wo in /var/log/ , kann ich ev. sehen warum er reboot gemacht hat?

    Evtl. nicht in /var/log, sondern mit

    Code
    journalctl --since=yesterday | grep reboot

    Also seit gestern mit der Suche nach reboot. Du kannst das auch ohne  | grep reboot aufrufen und Dich an den Zeiten orientieren.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!