RPi4 4GB RestartSSH-Script

  • Grüß euch,


    mein Problem besteht leider weiterhin.. ein nettes Community Mitglied (Danke nochmal an @JJandke) hat mir freundlicherweise ein RestartSSH-Script in Python geschrieben. Ich sollte dieses Script dann im Autostart (fstab) einbinden, nur weiß ich leider nicht genau, wie das geht? Hab mich zwar schon im Netz etwas schlau gemacht, aber wenn es ein eigenes Script ist, dann weiß man als Laie (wahrscheinlich) nicht, welche Dateien da dazugehörten und und und.. eventuell kann mir genau auch dieser User bzw. jemand anderen etwas helfen?


    Lg,

    Pi90

  • Die /etc/fstab ist zum Mounten bestimmt, nicht für autostart Scripts.


    Zeig das Script einfach her, dann kann man beurteilen, aus welchem Verzeichnis das gestartet werden kann. Im Code Tag </> rechts oben.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • So, bitte und danke für deine Hilfsbereitschaft.


    Lg,

    Pi90

    • Official Post

    Oje! Das Skript ist alt und falsch. Nicht mal der Shebang ist richtig. :shy:


    Wenn ein Problem mit dem SSH-Server vorliegt, dann macht es keinen Sinn mit diesem Würgaround das Problem einfach auszublenden. Da muss man der Sache schon auf den Grund gehen und sich die Logdateien ansehen.

  • Das ist eine sysV Lösung, inzwischen ist systemd Standard.


    Es würde auch nur dann noch über Umwege funktionieren, wenn in /etc/init.d/ ein Script "ssh" existiert. Das ist bei mir nicht der Fall.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • sich die Logdateien ansehen

    gut, dann komm ich wohl nicht drum herum. Macht es Sinn, den Inhalt der Logs auch hier für euch rein zu post (falls ich keine Ahnung hab, was mir die Logs überhaupt mitteilen wollen)?


    Lg,

    Pi90

  • noch ein kleines Update:

    seitdem ich das cool-Case for Pi4 habe, gibt es keine weiteren Probleme bezüglich Zugriff via SSH mehr und der mattermost.service hat auch keine Störung mehr. Vielleicht ist mein Pi4 wirklich zu warm geworden für die Prozesse. Wollte es euch noch mitteilen, dass das Problem damit wahrscheinlich behoben wurde.


    Lg,

    Pi90


  • So, mein Passwort steht jetzt nicht mehr drin.

  • DeaD_EyE

    danke für den Post, wo kann/soll ich das Script dann auf dem Pi ablegen?


    Das mit dem selbst kühlenden Gehäuse hat zwar 1 1/2 Wochen gut funktioniert, aber seit vorgestern hat sich der Pi wieder bei einem Schreibbefehl aufgehängt. Ich probier jetzt mal das Klonen von der einen SD Karte auf eine andere. Wenn's gar nicht hilft, dann setz ich ihn einfach nochmal neu auf und hoffe auf's beste. Jedoch bevor ich ihn neu aufsetze, schau ich natürlich noch, dass ich auch das Script teste.


    Lg,

    Pi90

  • Also ich würde zuerst ohne Anpassungen den Hardware-Watchdog des Raspberry PI verwenden.

    Wenn der Watchdog nach 15 Sekunden nicht beschrieben wird, startet der RPI automatisch neu.


    Falls der Watchdog doch nicht auslöst (heiß er schreibt weiter) und dennoch die Netzwerkverbindung verloren geht, muss man diese getrennt überwachen.

    Ein Neustart sollte eigentlich nicht notwendig sein, wie in diesem Artikel beschrieben worden ist.


    Das abgeänderte Script kann mit einem normalen User gestartet werden und lässt sich nach einer Änderung auch als systemd-timer einrichten.

    Damit aber der User auch systemctl reboot nutzen darf, muss er sich in der Gruppe sudo befinden.


    Das veränderte Script ohne while True:, d.h. es wird einmal gestartet, dann kommt der Logeintrag und ggf. wird der Neustart ausgelöst. Falls alles ok ist, wird das Script beendet:


    Das Programm ausführbar machen:

    Code
    chmod +x /usr/local/bin/ssh-watchdog

    Der Shebang #!/usr/bin/env python3 startet das Script mit Python 3



    Dann legt man eine service-unit für Systemd an. Früher waren das init-scripte und die waren ziemlich hässlich.

    Code: /etc/systemd/system/ssh-watchdog.service
    [Unit]
    Description=SSH Watchdog
    
    [Service]
    Type=oneshot
    User=pi
    ExecStart=/usr/local/bin/ssh-watchdog

    Wichtig ist hierbei der User und der Type. Da die Datei .ssh_credentials im Home Verzeichnis des Users angelegt wird, muss auch der User verwendet werden, mit dem das Script das erste Mal gestartet worden ist. Wenn man z.B. den User pi das machen lassen will, muss man das Script einmal mit dem User pi ausführen und Username und Passwort eingeben, welches dann in der Datei gespeichert wird.


    Damit das Script regelmäßig ausgeführt wird, kann man sich einen Timer für Systemd anlegen.


    Code: /etc/systemd/system/ssh-watchdog.timer
    [Unit]
    Description=SSH Watchdog Timer
    
    [Timer]
    OnBootSec=15min
    OnUnitInactiveSec=1min
    
    [Install]
    WantedBy=network.target


    Dann nur noch den Daemon neu laden und den Timer starten:

    Code
    systemctl daemon-reload
    systemctl enable ssh-watchdog.timer
    systemctl start ssh-watchdog.timer
    
    systemctl list-timers
    
    
    systemctl status ssh-watchdog


    Das gesamte Python-Script könnte man eigentlich auch mit einem Shell-Script ersetzen.

    Ich würde auch kein Passwort verwenden, sondern einen privaten Key.


    Probier aber erstmal den Watchdog aus.

  • danke, werd ich zuerst probieren und dann wie du beschrieben hast, den Rest (sollte Watchdog nicht klappen).

  • Jetzt bekomm ich leider beim Ausführen des ersten Befehls:

    Code
    sudo modprobe bcm2708_wdog

    diese Fehlermeldung:

    modprobe: FATAL: Module bcm2708_wdog not found in directory /lib/modules/5.4.0-1029-raspi

  • Jetzt bekomm ich leider beim Ausführen des ersten Befehls:

    Code
    sudo modprobe bcm2708_wdog

    diese Fehlermeldung:

    modprobe: FATAL: Module bcm2708_wdog not found in directory /lib/modules/5.4.0-1029-raspi

    Ja, weil man hier Links zu Artikel aus 2015 gepostet hat. bcm2708_wdog gibt es mit dem aktuellen Kernel nicht mehr. Siehe die Ausgabe von:

    Code
    sudo modprobe configs
    zcat /proc/config.gz | grep -i dog

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