Synology NAS per Skript herunterfahren

Hinweis: In dem Thema Synology NAS per Skript herunterfahren gibt es 30 Antworten auf 4 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Ich möchte mein Synology NAS, welches sich im gleichen Netzwerk wie mein PC befindet, per Skript herunterfahren.
    Das Skript soll über die "Systemeinstellungen>Energiesparmodus>Skript ausführen, Angabe des Speicherortes" automatisch gestartet werden, wenn der unter den Bedingungen eingestellte Systemzustand eintritt.

    Im Vorfeld habe ich SSH mit Port 22 im NAS aktiviert und PuTTY unter openSUSE Leap 15.1 auf dem PC installiert. Mit einem How-To habe ich auf dem NAS das Passwort für Benutzer root sowie dessen Login aktiviert. Mittels PuTTY kann ich mit SSH mich nun auf dem NAS als Root unter Eingabe des erstellten Passwortes einloggen. Hier kann ich dann den Befehl 'shutdown -h now' in der Konsole eingeben, worauf das NAS herunterfährt. Auch der Befehl 'synoshutdown -s' funktioniert, wobei das NAS nicht herunterfährt, wenn von diesem gerade kritische Operationen ausgeführt werden.


    1.) Was muss in dem benötigten Skript stehen um das gleiche zu erreichen wie mit dem manuellen Login über PuTTY?

    2.) In welchem Verzeichnis muss das Skript abgespeichert sein?


    Ich betreibe sowohl den PC als auch das NAS an einer UPS von APC. Über Anpassung diverser Dateien kann mein PC per USB-Verbindung die Daten der UPS auslesen. Ab 40% Ladezustand zeigt das System den kritischen Ladezustand an und bei 30% wird erfolgreich der PC heruntergefahren (Systemeinstellungen des Energiesparmodus). Beim Herunterfahren des PC's soll das Skript ausgeführt werden. Das Skript soll sowohl beim zu 99% eingeloggten User1, als auch beim Admin root funktionieren.

    Ich würde mich sehr auf Unterstützung freuen, denn Google findet zumeist Tipps für Windows User, selten für den Raspi bzw. Linux und nichts davon funktioniert in meiner Umgebung.

    Für den Inhalt des Beitrages 301318 haftet ausdrücklich der jeweilige Autor: freestylz

  • Weil sich die How-To's darauf bezogen hatten per PuTTY zumindest das Passwort und den Login für Root auf dem NAS zu erstellen. Das wäre wohl nötig, um den Shutdown Befehl per SSH ausführen zu können. Andere Nutzer als Root gehen wohl nicht, es sei denn man macht weitere Modifikationen auf dem NAS.


    Sollte es eine andere Möglichkeit geben als PuTTY, wäre mir das auch das auch lieb. Mit Bordmmitteln von openSUSE sollte es eigentlich auch klappen. Hier gibt es ja die Dateien - nut.conf, upsd.conf, upsd.users und upsmon.conf - aber an dieser Stelle bin ich gescheitert. UPS per USB hat noch funktioniert, aber nicht der Shutdown, was laut NUT ähnlich den Systemeinstellungen des Energiesparmodus gehen sollte. How-To's sind diesbezüglich aber auch wieder nur für ältere Distributionen von openSUSE bzw. den RASPI verfügbar und funktionieren, zumindest bei mir, nicht. Daher schien mir der Weg über SSH, PuTTY und Skript am wahrscheinlichsten zum Laufen zu bekommen.

    Für den Inhalt des Beitrages 301322 haftet ausdrücklich der jeweilige Autor: freestylz

  • Bei Linux reicht ein Terminal/Konsole:

    Code
    stephan@linux64:~/Downloads> ssh -p 40022 stephan@192.168.0.7
    Last login: Sat Sep 10 18:14:31 2022 from 192.168.0.2
    Have a lot of fun...
    stephan@laptop:~> 

    Login auf meinem Laptop per ssh (ausführliche Darstellung)........


    Schneller login per ~/.ssh/config

    Code
    stephan@linux64:~/Downloads> ssh laptop
    Last login: Sun Sep 11 21:30:22 2022 from 192.168.0.2
    Have a lot of fun...

    Für den Inhalt des Beitrages 301325 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Leider kann ich als Anfänger mit deiner Antwort nichts anfangen. Ich sehe da noch keinen genauen Lösungsweg, eher nur einen Ansatz. OpenSUSE / Linux bringt eine Konsole und auch SSH mit sowie eine zugehörige Config-Datei, das ist für mich noch nachvollziehbar. Aber wie soll das Ganze nun automatisch bei einem definierten Batteriezustand das NAS herunterfahren?


    Mein Versuch vom Shutdown Skript shutdown.sh:

    Code
    #! /bin/sh
    sshpass -p "meinPasswort" ssh -t root@ip-meines-NAS "sudo shutdown -h now"

    Das Skript shutdown.sh habe ich mit chmod +x ausführbar gemacht und es lässt sich mit ./shutdown.sh im Terminal ohne Fehlermeldung ausführen - aber ein Effekt ist nicht zu erkennen, das NAS fährt nicht herunter. Führe ich das Skript aus wenn das NAS nicht eingeschaltet ist, dann gibt es einen Fehler, dass der Host nicht erreichbar ist.

    Für den Inhalt des Beitrages 301328 haftet ausdrücklich der jeweilige Autor: freestylz

  • Wenn du root bist, brauchst du kein sudo mehr.....


    Benutze bitte absolute Pfade:

    Code
    sshpass -p "meinPasswort" ssh root@ip-meines-NAS -t "/usr/sbin/shutdown -h now"

    Hier hat es funktioniert, ich benutze aber kein Passwort sondern einen key, daher etwas anders:

    Code
    stephan@linux64:~/Downloads> ssh -p '40022' 'root@192.168.0.7' -t "/usr/sbin/reboot"
    Connection to 192.168.0.7 closed by remote host.
    Connection to 192.168.0.7 closed.

    Wenn der geänderte Befehl oben nicht funktioniert, solltest du dich mit ssh-keygen und ssh-copy-id befassen.

    Danach ist mein Befehl 1. Wahl.

    2 Mal editiert, zuletzt von Sauerland ()

    Für den Inhalt des Beitrages 301336 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Erster Code hat leider nicht zum gewünschten Erfolg geführt. Meine shutdown.sh habe ich wie von dir angegeben modifiziert und in das Verzeichnis /usr/sbin kopiert. Du schreibst, bei dir hätte es funktioniert. Sehe ich das richtig, dass du mit dem Code von deinem PC das Skript gestartet hast um deinen Laptop neu zu starten? Du hast zum Test also kein NAS angesprochen?
    Ist denn der Teil "sshpass -p meinpasswort ssh root@ip-meines-NAS -t.........." für meinen Anwendungsfall überhaupt korrekt um auf dem NAS den shutdown-Befehl ausführen zu können?


    Meine Tests:

    1.) Linksklick auf das Skript und im Dropdown Menü "Ausführen" bewirkt nichts am NAS, auch keine Fehlermeldung.
    2.) Start des Skripts über das Ereignis des Energiesparmodus bewirkt nichts, auch keine Fehlermeldung.

    3.) Rechtsklick auf das Skript > Aktionen > in Konsole Ausführen endet mit den Fehlermeldungen "Achtung: Das Programm „/usr/sbin/shutdown.sh“ mit den Argumenten „/usr/sbin/shutdown.sh“ kann nicht gestartet werden und "Achtung: execve: Fehler im Format der Programmdatei".


    Ein Connect zwischen PC und NAS per ssh-keygen in Verbindung mit ssh-copy-id wäre wohl eine weitere und durchaus sicherere Möglichkeit für eine Verbindung, aber ich müsste mich in der Tat erst einmal damit befassen. Aber mich in ein weiteres Thema einzuarbeiten, wollte ich eigentlich vermeiden und war auch der Grund hier im Forum Hilfe zu suchen.

    Bereits mit dem NUT-Server und PuTTY für NAS shutdown habe ich mich einige Zeit befasst, was nicht zum Erfolg führte, da die auffindbaren Anleitungen meist veraltet sind. Ich hätte hier auf eine Copy-Paste-Lösung für mein Problem gehofft. Nicht dass ich zu faul wäre mich irgendwo einzuarbeiten, aber manchmal sollte man auch mal den vermeintlich einfachen Weg versuchen.

    Für den Inhalt des Beitrages 301373 haftet ausdrücklich der jeweilige Autor: freestylz

  • Hier auf meinem Desktop-Rechner:


    Code
    stephan@linux64:~> sshpass -p 'xxxxxxx' ssh -p 40022 root@192.168.0.7 -t '/usr/sbin/shutdown -h now'
    
    Connection to 192.168.0.7 closed by remote host.
    
    Connection to 192.168.0.7 closed.

    Wie du siehst, wird die Verbindung zum Laptop unterbrochen, der Laptop fährt herunter.

    Einmal editiert, zuletzt von Sauerland ()

    Für den Inhalt des Beitrages 301374 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Korrekt, ich habe openSUSE Leap 15.1, Die Code Zeile scheint also gar nicht mal so falsch. Dann wird wohl das NAS die Ausführung verhindern. Aber grundsätzlich verstehe ich es hoffentlich richtig, wären Passwort und/oder IP des NAS falsch eingegeben bzw. würden vom NAS nicht akzeptiert werden, müsste es dann zu einer sichtbaren Fehlermeldung kommen?

    Du hast dein Passwort zwischen diesen ' .... ' Zeichen eingegeben. Ich habe diese " .... " Zeichen verwendet. Ist das relevant. Ich hatte das Passwort in der Zeile auch schon komplett ohne Zeichen stehen. Bin gerade verwirrt wie es richtig wäre.

    Für den Inhalt des Beitrages 301376 haftet ausdrücklich der jeweilige Autor: freestylz