Synology NAS per Skriptbefehl herunterfahren oder starten

bonehelm

Lt. Commander
Registriert
Mai 2013
Beiträge
1.145
Hallo Leute,

im Internet habe ich schon einige Seiten gefunden, auf denen gezeigt wird, wie man per Batchdatei die Synology Platte herunterfahren kann oder starten kann.
Aber bei mir will das einfach nicht funktionieren. Ich muss direkt dazu sagen, dass ich den Standard Admin deaktiviert habe und einen neuen User mit vollen Adminrechten angelegt habe.

Ich habe folgendes gemacht. Ich habe die plink.exe heruntergeladen und in ein Ordner gepackt.
Anschließend habe ich eine Textdatei erstellt und folgenden Inhalt reinkopiert.

plink.exe -ssh -pw password root@192.168.1.2 shutdown -h

Password habe ich das Passwort des neuesn Users eingetragen.
Statt root den Usernamen. Die IP Adresse habe ich auch angepasst.

Dann habe ich nur noch die txt in bat umbenannt.
Wenn ich die Batch Datei jedoch starte, geht die Kommandozeile kurz auf, schließt sich aber relativ schnell wieder und nichts passiert.
SSH Dienst ist in der Nas aktiviert.

Hat jemand eine Idee, warum das nicht funktioniert?

Vielen Dank schon mal

VG bonehlem
 
Führ das Kommando mal manuell aus anstatt es per Batch auszuführen, dann wird auch angezeigt, was der Fehler ist.
Bei ner Batchdatei geht das Fenster hingegen von selbst zu
 
Starte deine .bat Datei doch mal in einem Powershell Kommando Fenster.
Also „powershell“ in die Windows Suche eingeben, dann das blaue Command Fenster öffnen, mit „cd meinverzeichnis“ in das Verzeichnis wechseln wo deine .bat Datei liegt - und dann die .bat Datei starten (Namen der Datei eintippen und Enter drücken). Dann solltest du sehen warum dein Befehl nicht zündet.
 
Den Anspruch hatte ich auch schon. Ich habe mir dazu PowerShell Skripte geschrieben / zusammengesucht. Hauptsächlich zusammengesucht.

Für QNAP, sollte aber äquivalent funktionieren:

Herunterfahren:
Code:
#Der Befehl um PoSH-SSH zu installieren, welches für SSH per PowerShell notwendig ist
#Find-Module PoSH-SSH | Install-Module


#Credentials erstellen für die SSH-Verbindung zur QNAP
$username = "AdminUser"
$password = "HierDeinPasswort"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr

#Die QNAP per SSH Runterfahren
New-SSHTrustedHost -SSHHost 192.168.???.??? -FingerPrint 5e:31:53:b6:f6:eb:38:e2:46:...SSHFingerPrint
New-SSHSession -ComputerName 192.168.???.??? -Port 22 -Credential $cred
Invoke-SSHCommand -SessionId 0 -Command "poweroff"
Remove-SSHSession -Index 0

exit
Beim ersten Durchlauf entsprechend PiSH-SSH installieren
Passwort, IP und Fingerprint von meinem eigenen NAS habe ich natürlich zensiert.

Falls der poweroff Befehl bei Synology nicht wirken sollte, schau mal hier rein: https://community.synology.com/enu/forum/1/post/134904

Nachteil halt, dass das Admin-Passwort für dein NAS im Klartext im Skript steht. Das könnte man auch anders handhaben, für meine private Umgebung wenn das Skript auf meinem privaten Heimserver gespeichert ist sehe ich aber nicht die Notwendigkeit.


Wieder hochfahren per WoL geht mit Powershell wie hier beschrieben: https://powershell.one/code/11.html
Den Code habe ich bei mir exact übernommen.


Für Zwecke der Automatisierung (z.B. Aufgabenplanung) nutzt man dann eine .bat um die Powershell zu starten. In die Batch dann Code dieser Art rein:
Code:
Powershell.exe -executionpolicy Bypass C:\Skripte\Shutdown_QNAP.ps1
 
Zuletzt bearbeitet:
plink.exe : Die Benennung "plink.exe" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines
ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
  • plink.exe -ssh -pw password username@192.168.2.225 shutdown -h
  • ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (plink.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

password und username habe ich natürlich ersetzt.

Was hat diese Meldung zu bedeuten? Verzeichnis ist definitiv das richtige.
 
Jetzt mal blöd gefragt: Wieso wird das ganze nicht über die interne Aufgabenplanung auf der NAS gemacht?
 
@Rickmer Selbst mit dem kompletten Programmpfad funktioniert es nicht. Selbe Fehler.
@xNeo92x Ich würde gerne über mein StreamDeck den Befehl auslösen. Hochfahren per WOL funktioniert, jedoch hapert es noch mit dem herunterfahren.

Hat noch jemand eine Idee?

VG
 
bonehelm schrieb:
Hat noch jemand eine Idee?
Siehe den Powershell Code im Beitrag von mir. Funktioniert zumindest für QNAP und sollte für Synology höchstens kleine Anpassungen benötigen.
 
Gib den Befehl mit der plink.exe mal in CMD ein und nicht in Powershell. Natürlich samt Pfad.
 
wenn ich den Befehl direkt in CMD eintippe, erscheint folgende Fehlermeldung.

FATAL ERROR: Couldn't agree a key exchange algorithm (available: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256)

Weiß jemand, was das zu bedeuten hat?

VG
 
Jetzt bin ich einen Schritt weiter. Ich habe die aktuelle plink.exe heruntergeladen. Beim ersten mal Ausführen des Befehls, musste ich anschließend den Key hinzufügen.
Wenn ich anschließend erneut versucht habe den Befehl auszuführen wurde folgende Meldung ausgespuckt.

Access granted. Press Return to begin session.
Must be root.

FUnktioniert das garnicht mit einem User mit Admin Rechten? Aber selbst als ich den Admin wieder aktiviert habe, hat es mit diesem auch nicht funktioniert.
 
Ja ist er.
Ich habe mich, mit hilfe deines Links, per root eingeloggt und konnte auch mit dem Befehl shutdown -h die Platte herunterfahren.
Aber wie schaffe ich das, jetzt diesen batch Befehl auszuführen ohne mich jedes mal über die powershell als root einzuloggen. Da steige ich noch nicht ganz dahinter.
 
plink.exe -ssh -pw password username@192.168.2.225 shutdown -h

Wieso setzt du unter username nicht einfach root ein statt deines Benutzers?
 
Habe ich ebenfalls versucht. Es erscheint in der Eingabeaufforderung oder auch in der Powershell die Meldung FATAL ERROR: Network error: Conection refused.
 
Klingt danach als ist der Ssh-Zugang per root nicht erlaubt. Evtl kannst du per "sudo shutdown" herunterfahren? Dies würde natürlich voraussetzen dass dein normaler user sudo ausführen darf.
 
Uff, dass es doch so umfangreich wird, hätte ich nicht gedacht. Dann muss ich mich doch mal irgendwie reinlesen.
Danke trotzdem an alle.
 
Zurück
Oben