Guten Abend Zusammen,
ich habe hier einen "Zyxel NAS542" stehen, dieser lässt sich via WOL starten, nun würde ich diesen aber auch gerne herunterfahren ohne auf den PowerButton zu drücken oder es über die Weboberfläche zu machen.
Hat jemand eine Idee?
Danke und einen schönen Abend
Gear
Hallo Gear,
ssh benutzer@host sudo poweroff
je nachdem wie das Kommando wirklich implementiert ist und ob Du sudo brauchst oder nicht.
Mein Notiz: https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
Gruß Otto
Hallo Otto, danke.
Ich vermute, dass im NAS dann SSH aktiv sein muss und zudem der Befehl wenn ich mit SSH auf dem NAS bin funktionieren muss?
Hatte das mal versucht, das SSH des Zyxel ist fast schon nutzloser als schimmliges Brot...
Hatte es schonmal nach deiner Anleitung der Seite vesucht, leider geht das nicht, zumindes für den Zyxel.
Hi,
na klar ssh muss aktiv sein. Und der Befehl zum shutdown kann Zyxel NAS spezifisch sein, weiß ich leider nicht. Ich habe keine.
Aber ssh ist doch die probate Schnittstelle für Linux - wieso nutzlos?
Was geht denn nicht? Es kann sein, dass wegen einer anderen Struktur der Ablauf etwas geändert werden muss.
Ich helfe Dir gern, aber mangels Zyxel bin ich dann drauf angewiesen entsprechende Infos zu bekommen.
Gruß Otto
es könnte sein, das dort ein "bussybox" als shell dauf ist.
Es könnte also auch lauten:
halt -h now
shutdown -h now
Ich muss heute Abend oder am WE mal drauf schauen.
Hatte mal per SSH probiert, hier hibt es ne cmd hilfe mit den Cmds, nur hatte kein einziger funktioniert.
Ich geb dann bescheid.
Danke schon mal :)
Otto, wie ich das in deinem Blog abeitrag verstanden habe, muss auf dem Zielsystem, in meinem Fall der NAS EIN Benutzer angelegt werden, welcher ohne Passwort funktioniert, oder?
Soweit ich mich zurückerinnere funktioniert das nicht, die verfügbaren Cmds sind sehr begrenzt.
Wenn ssh geht, sollte (zu 99,9%) auch ein Passwortloses Login mit Key Funktionieren ....
Zitat von: Gear am 07 März 2019, 12:17:22
Otto, wie ich das in deinem Blog abeitrag verstanden habe, muss auf dem Zielsystem, in meinem Fall der NAS EIN Benutzer angelegt werden, welcher ohne Passwort funktioniert, oder?
Nein, dann hätte ich das völlig falsch beschrieben oder bei Dir war wunschlesemodus aktiv :)
Du musst ssh mit Authorisierung über elektronische Schlüssel einrichten. Damit wird der Benutzer auf deinem Quellsystem authorisiert sich so zu verhalten wie der Benutzer auf dem Zielsystem. Das Passwort des Zielbenutzers wird nicht zur Authorisierung verwendet und nicht abgefragt. Vielmehr wird der elektronische Schlüssel des Quellbenutzers als Authorisierung auf dem Zielsystem im Zielbenutzer hinterlegt. Zeigt einer den Schlüssel, ist er authorisiert als der Benutzer auf dem Zielsystem zu agieren.
Gruß Otto
Ok Otto, sry hatte den Beitrag vor langerzeit mal gelesen, hatte ihn die Tage nochmal überflogen.
Folgende Version ist es:
> BusyBox v1.19.4 (2018-11-08 14:45:54 CST) built-in shell (ash)
Also, bin per SSH drauf, unter "help" bekomme ich nur folgende erlaubte Cmds:
Built-in commands:
------------------
. : [ [[ alias bg break cd chdir continue eval exec exit export
false fg hash help jobs kill let local printf pwd read readonly
return set shift source test times trap true type ulimit umask
unalias unset wait
edit:
Anscheindend soll auch Poweroff gehen.
> poweroff [-d DELAY] [-n] [-f] < kommt aus dem ssh des nas
Ich hab aber im inet nichts gefunden, das helfen soll.
Zudem sagt er mir dann immer: "poweroff: Operation not permitted"
Ich nutze den Befehl poweroff -n
um das NAS542 herunterzufahren.
Vorher connecte ich mich per Telnet darauf und sende dort Username, Passwort, den Befehl "su", nochmals das Passwort und dann den poweroff Befehl.
Muss aber dazu sagen, ich lasse das NAS nicht von FHEM steuern. Ich nutze es nur für automatisierte Backups der Laptops. Von diesen aus wird per WOL das NAS gestartet. Zum runterfahren haben ich mir mit AutoIT eine kleine shutdown.exe geschrieben, die nichts anderes macht als sich per Telnet auf das NAS zu verbinden und den Poweroff-Befehl zu senden.
Ich habe auch mal google gefragt, scheint, als ob diese Neustart und Aus Befehle nicht über Telnet und SSH nutzbar sind.
Also in meinem Fall.
Gäbe es denn dann eine andere Möglichkeit?
/ $ poweroff -n
poweroff: Operation not permitted
Bei mir funktioniert es damit problemlos. Ich habe die Firmware V5.21(ABAG.0) auf dem NAS542. Vielleicht klappt der Befehl mit neueren Firmwares nicht mehr.
Ich hab die FW: V5.21(ABAG.2)
Ich schaue mal nach nem Downgrade.
Hab es auch gerade eben selbst mit Telnet nochmal getestet und funktioniert:
kannst du mal "help" tippen und die auswahlliste schicken?
Danke =)
~ $ help
Built-in commands:
------------------
. : [ [[ alias bg break cd chdir continue eval exec exit export
false fg hash help jobs kill let local printf pwd read readonly
return set shift source test times trap true type ulimit umask
unalias unset wait
~ $ su
Password:
BusyBox v1.19.4 (2017-05-26 17:12:50 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
~ # help
Built-in commands:
------------------
. : [ [[ alias bg break cd chdir continue eval exec exit export
false fg hash help jobs kill let local printf pwd read readonly
return set shift source test times trap true type ulimit umask
unalias unset wait
~ #
Oh man, ja ok... -.-"
Das "su" hat gefehlt, dann PW und dann geht der Cmd....
Ok gut, dann wäre das Problem ja gelöst.
> Nach "poweroff -n" war der NAS sehr schnell aus, fährt der denn dann richtig runter? Sehr ungewohnt.
Und ich kann den Abschaltbefehl per WOl in FHEM dann abschicken?
Ich muss da dann ja "su", "Pass" und "poweroff -n" eingeben, wie geht das dann alles zusammen?
Vielen Dank!!!! =D
Ich muss jetzt ins Bett, schaue mir das dann morgen weiter an, Danke!!
Man hört, dass jede Festplatte einzeln ausgeschaltet wird und danach das System ganz abschaltet. Waren die Festplatten vorher im Standby (blinkende LEDs), fahren diese auch erst alle wieder hoch, bevor das System runterfährt. Also bei mir ist es nicht schneller oder langsamer, als wenn ich über die Weboberfläche das NAS ausschalte.
Wie das NAS über FHEM runtergefahren werden kann weiß ich nicht. Wie gesagt, jedes Laptop/PC schaltet bei mir je nach Wochenplan das NAS an, macht sein Backup und schaltet das NAS wieder aus. Da hat ausnahmsweise mal FHEM nichts mit beizutragen.
CST -> Centra Standard Time - warum fährst Du Deine NAS mitten in den USA? Also falls Du mal mit den Zeitangaben ins schleudern gerätst ::)
su steht bei busybox also offenbar für etwas wie sudo
Passwort eingeben muss natürlich irgendwie umgangen werden.
Also entweder Du kannst so etwas wie sudoers machen oder Du kannst einen root User anlegen, oder poweroff an den normalen user irgendwie delegieren.
Ich bin Dir leider keine Hilfe was dieses Problem angeht, ich habe das system nicht.
Gruß Otto
Zitatpoweroff -n
-n = don't sync
Musst selber wissen ob Du damit leben kannst.
https://www.unix.com/man-page/suse/8/poweroff/
Zitat von: Otto123 am 07 März 2019, 21:22:39
CST -> Centra Standard Time - warum fährst Du Deine NAS mitten in den USA? Also falls Du mal mit den Zeitangaben ins schleudern gerätst ::)
Danke für den Hinweis, da musste ich direkt nochmal nachschauen. Dies scheint aber nur im BusyBox so dargestellt werden. In der Weboberfläche ist es die richtige Zeitzone und wenn Dateien angelegt werden, dann auch mit richtigem Zeitstempel.
Zitat von: CoolTux am 07 März 2019, 21:28:29
Musst selber wissen ob Du damit leben kannst.
https://www.unix.com/man-page/suse/8/poweroff/
Auch an dich, danke für den Hinweis. Ich hatte irgendwas mal gefunden, dass dieses -n für now steht.
Fertig syncen sollen die Festplatte natürlich, bevor runtergefahren wird. Danke!
Zitat von: swsmily am 07 März 2019, 21:31:05
Danke für den Hinweis, da musste ich direkt nochmal nachschauen. Dies scheint aber nur im BusyBox so dargestellt werden. In der Weboberfläche ist es die richtige Zeitzone und wenn Dateien angelegt werden, dann auch mit richtigem Zeitstempel.
Naja meist ist es so, die Zeitzone wird nicht beachtet, die Zeit wird "verbogen" damit die Optik stimmt. Funktioniert solange bis Daten mit Zeitzonen Bezug geliefert werden und an einen System mit anderer Zeitzone ausgewertet werden.
Typischer Fall wären Kalender, Logfiles usw.
Kann aber sein, dass das System was auf der Busybox läuft noch einmal separat die Zeitzone verwaltet wird. Reine spekulation von mir.
Mich würde diese Zeitzone wuschig machen :)
Mir ist das nie aufgefallen mit der Zeitzone, da Filesystem, Weboberfläche usw. alles immer die richtige Zeit zeigten. Und mit Telnet verbindet man sich normal nicht drauf. Das war damals um das Script zu testen und jetzt zur Hilfestellung ;D
Nur mal zu Info:
sudo - Erlaubt den aktuellen Benutzer einen Befehl als ein anderer User zu starten, Passwort ist aktueller User
su - Erlaubt den kurzfristigen Wechsel zu einem anderen User, Passwort ist das des Zieluser
beides sind schon ältere Befehle ....
Zitat von: Wernieman am 08 März 2019, 08:04:54
su - Erlaubt den kurzfristigen Wechsel zu einem anderen User, Passwort ist das des Zieluser
Ja aber su ohne Username dahinter? Das kannte ich nicht. Scheint aber so zu sein:
Zitatsu [OPTIONS] [-] [username]
Change user id or become root
Options:
-p, -m Preserve environment
-c CMD Command to pass to 'sh -c'
-s SH Shell to use instead of default shell
Wenn Du root willst, solltest Du dann nur "su -" verwenden.
Der - bedeutet, das auch die "Umgebung" geladen wird.
So, ich habe nun eine .sh File die meinen NAS herunterfahren kann, diese sieht so aus:
#!/bin/bash
sshpass -p PASS ssh USER@IP << EOF
su <<!
SUPASS
poweroff
!
EOF
Die File funktioniert komplett problemlos, ich würde gerne die File über FHEM ausführen, was laut Forum so gehen soll:
"/opt/fhem/ShutDown_NAS_FS.sh";
Es tut sich aber nichts und in der LogFile steht folgendes:
sh: 1: /opt/fhem/ShutDown_NAS_FS.sh: Permission denied
Ich gehe mal davon aus, dass FHEM nicht die Rechte hat die Datei auszuführen.
Die File hat folgende Rechte (ls -al)
-rw-r--r-- 1 fhem dialout 100 Mar 9 16:33 ShutDown_NAS_FS.sh
Die Datei ist nicht ausführbar. Damit müsstest Du entweder:
"bash /opt/fhem/ShutDown_NAS_FS.sh"
Oder Du musst der Datei noch das Ausführen Flag geben, sollte so auch in der FHEM Kommandozeile gehen, da fhem Besitzer ist:
"chmod +x /opt/fhem/ShutDown_NAS_FS.sh"
Gruß Otto
Danke Otto,
wenn ich folgendes ausführe, oder es über WOL mache
"bash /opt/fhem/FHEM/OwnScript_SSH_Shutdown_NAS_FS.sh"
dann steht folgendes in der Log
2019.03.09 18:04:31 3: [WOL.NAS.FS] set WOL.NAS.FS off
2019.03.09 18:04:31 3: [WOL.NAS.FS] shutdownCmd: "bash /opt/fhem/FHEM/OwnScript_SSH_Shutdown_NAS_FS.sh" executed
Pseudo-terminal will not be allocated because stdin is not a terminal.
Ja, die File hat sich geändert, bzw der ablage Ort, sollte aber nichts machen, da die Rechte die gleichen sind und es über "Edit files" angelegt ist.
Ein Ausführen des
"chown +x "bash /opt/fhem/FHEM/OwnScript_SSH_Shutdown_NAS_FS.sh""
ergibt folgendes in der Log
chown: invalid user: '+x'
sorry muss chmod heissen :-[
Bei deiner Befehlsfolge aus #27 kann ich Dir leider nicht helfen mit sshpass & co hatte ich nie Erfolg.
Und die Folge mit den Inputs innerhalb vom Input ist mir auch zu undurchsichtig. Scheint so ja nur im Terminal zu gehen.
Hihihi alles gut Otto. :D
Danke, mit CHMOD geht es.
Ja, es scheint nur im Terminal zu funktionieren, ich werde weiterschauen, ob ich eine Lösung finde.
Danke dennoch =)
sagen wir mal so, was mir gerade auffällt. Warum machst Du nicht ein Script auf der NAS? Du kannst dann einfach das Script über ssh starten.
Vielleicht ändert das nichts am eigentlichen Problem, aber jetzt machst Du ja auch noch "Remote Terminal Input"
Otto schrieb:
"chmod +x /opt/fhem/ShutDown_NAS_FS.sh"
Du dagegen:
"chmod +x "bash /opt/fhem/FHEM/OwnScript_SSH_Shutdown_NAS_FS.sh""
Siehst Du den Unterschied?
Für ssh ohne Passwort gibt es eine Lösung, lies Dich bitte ein, Tipps hast Du hier bekommen. sshpass ist .... absolut NICHT empfehlenswert und Software ... aus dem "Krautladen"
Pseudo-terminal will not be allocated because stdin is not a terminal.
Dein sshpass oder irgend etwas aus Deinem Script braucht ein "echtes" Terminal mit echten Eingabearten. Damit KANN es nicht mit FHEM funzen, da alle automatischen Scripte (wie z.B. auch cron-scripte), eine solche Terminalfunktion nicht bitten können. Schließlich sitzt kein Mensch mit Tastatur davor ...
Edit:
Kann Otto nur Zustimmen. Alle Möglichkeiten für ssh siehe man-File:
man ssh
Ok, hab das richtige nun ausgeführt, ändert dennoch nichts.
Also, wenn ich das richtig verstehe, dann soll ich das so machen wie von Otto in seinem BlogBeitrag beschrieben?
> https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
Habe ich gerade erneut versucht, zudfem auf dem NAS von Hand die Ordner angelegt, da man ohne Rechte (su) nichts machen kann.
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sh: can't create .ssh/authorized_keys: Permission denied
Ich weiß nicht wie ich das auf den NAS bekommen soll!?
Du musst mal schauen (suchen) ob das bei zyxel überhaupt geht.
Hab das hier gefunden: https://businessforum.zyxel.com/discussion/1115/ssh-implement-ssh-public-key-authentication
Aber andererseits ist es wohl openssh, da sollte das gehen.
ssh mit public key wird nicht mit erhöhten Rechten eingerichtet, sondern für den User. Der macht dann su ...
Also wenn Du was mit su machen musst ist es eigentlich generell falsch.
Schreib mal genau die Schritte die Du machst, nicht nur die Ausgaben
So, ich habe es so halb geschafft.
Es funktioniert, sobald ich aber FHEM bzw den Pi neustarte geht es nicht mehr und ich muss den Key neu übertragen.
Woran könnte das liegen?
Ok, sry es lag nicht am Pi, sondern am NAS, sobald dieser neustartet ist der Key weg.
Zudem wird die crontab resetet.
Nun weiß ich nicht, wie ich das am besten umsetze, dass der Key nicht verloren geht, jemand eine Idee?
Moin,
wird der Key ev. in einem Ram Filessystem gespeichert und nicht im Flash abgelegt?
Gruß Otto
Moin,
wie kann ich das herausfinden?
Danach suchen, :D
ich weiß nur das bei solchen Systemen nur bestimmte Dinge im Filesystem dauerhaft geschrieben werden, weil sonst der Flash kaputt geht. Deswegen wird das Aktive Filesystem nur im RAM abgebildet. Aber wie gesagt, ich habe keine Zyxel...
Alles gut Otto, danke, mir hat es dennoch weitergeholfen.
Habe seit heute Morgen gesucht, im Zyxel Forum wird es zwar so ähnlich beschrieben wie in deinem BlogBeitrag.
Zudem habe ich noch für andere NAS-Systeme die Prozedur versucht, leider ohne Erfolg.
Die überlegung den NAS auf Debian umzuflashen war eine weitere Überlegung, jedoch will ich keine ca. 8TB irgendwo zwischenspeichern.. =O
Ich schreibe gerade eine kurze Anleitung wie man das alternativ machen kann ohne den Key. =)
So, ich habe nun am laufen, anders als gewollte oder geplant.
Ich mache es nun doch über "sshpass", da der Zyxel NAS zwar die bessere Lösung mit dem SSH-Key unterstützt, aber nach einem Neustart alles zurücksetzt und es dann nicht mehr funktioniert.
Anbei eine kurze Anleitung wie man das genannte Problem umgehen kann.
> Anbei kann man die Prozedur auch für Multiline CMDs umschreiben und nutzen.
Weg über "sshpass"
Zuerst muss sshpass auf dem System installieren, welches den Remote steuern soll installiert werden:
sudo apt-get install sshpass
Nun legen wir eine File über FHEM (Edit files) an, die wir z.B. als "Shutdown_NAS_FS.sh" bennen und folgendes einfügen:
#!/bin/bash
sshpass -p PASSvonROOT ssh root@IPdesHOST poweroff &
Das & am Ende lässt den Befehl im hintergrund ausführen und somit wir keine Console benötigt.
Man muss nicht Root als User nehmen, jedoch muss der gewählte User ohne Passwort eingabe die Möglichkeit haben Poweroff auszuführen
Dann führen wir folgenden Befehl aus:
"chmod +x /opt/fhem/FHEM/Shutdown_NAS_FS.sh"
Nun wird noch das ATTR des WOL Device gesetzt:
attr WOL.Device shutdownCmd "bash /opt/fhem/FHEM/Shutdown_NAS_FS.sh"
Danke an alle die geholfen haben. =)
Kann mir einer beim einrichten helfen . Ich würde dasselbe gerne wie Gear machen . Würde meinen Nas auch gerne ausschalten. Leider bin ich Anfänger und weiß nicht wie ich dieses Skript schreibe . Würde das einer für mich übernehmen und mir per E-Mail zusenden. Danke
Moin,
meinst Du das ernst? Dir soll einer diese beiden Zeilen per Email senden?
#!/bin/bash
sshpass -p PASSvonROOT ssh root@IPdesHOST poweroff &
Zum Rest kann ich wenig sagen ich habe keine Zyxel und kenne die sshpass Methode nur vom lesen.
Gruß Otto
und sshpass sollte wirklich "nur" für den Notfall genommen werden. SSH-Key ist da 100% besser (und es ist für Zyxel ein Trauerspiel, das es nicht funktioniert)
@otto muss ich die beiden Zeilen in den teleclient schreiben oder wie bekomme ich das in Router rein .
Sorry bin totaler Neuling und weiß nicht wie ich das machen muss . WOL aufwecken habe ich schon hingebracht . Da gibt's ne App (iOS). Ist das teleclient einzugeben ? Sorry wenn ich so dumm frage .
Ich habe keine Ahnung was Teleclient ist!? Und was meinst Du mit Router? Was ist das für ein Router? Was willst Du genau tun - also von wo aus willst Du deine NAS herunterfahren?
Ich will das Nas Ausm Internet über den Browser oder vom Handy ausschalten können wann immer ich mag. Mit WOL wake on Funktion wecke ich es auf .
@redblack1893
Hast du denn einen VPN Zugang, um von Extern auf dein Heimnetzwerk zuzugreifen?
Gear. Nein habe ich noch nicht welchen Anbieter kannst Du mir empfehlen?
Oder kann ich im Nas einfach Fernwartung einstellen und es darüber steuern .
Ich habe in meiner FritzBox einen "VPN" Zugang eingerichtet, darüber kann ich vom Handy (oder auch anderen Geräten) von extern auf mein Heimnetzwerk zugreifen.
> Andere Router Hersteller haben manchmal auch eine VPN Funktion dabei, müsstest du mal darüber schauen.
>> Alternativ einen VPN auf dem RPi / Server auf dem FHEM läuft. (Da kann ich dir nicht weiterhelfen, nutze wie gesagt, das von der FritzBox)
Zum starten und herunterfahren des NAS schreibe ich demnächst mal zusammen, wie das geht.
> Hab gerade leider noch ein paar Sachen zu drucken und entwerfen. =O
Du kannst ja mal schauen ob du das mit dem VPN hinbekommst.