Synology herunterfahren mit url aufruf

Status
Für weitere Antworten geschlossen.

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich möchte das meine Synology nur läuft wenn ich sie auch brauche, das heißt wenn ich zuhause bin (erkennt meine hausautomation), wird die synology gestartet mittels relais. bin ich nicht mehr zuhause soll diese herunterfahren.

leider geht das ganze nicht per terminal, ich kann nur urls aufrufen.

php telnet scripte die auf der synology laufen gehen leider nicht.

hat jemand einen tip
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
schau dir mal meinen Shell-Workshop hier im Forum - insbesonderen das Kapitel 12 an

Itari
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
Danke dir und deinem Workshop:

habe dein script angepasst, leider will die kiste nicht herunterfahren, mit ps bekomme ich alles angezigt aber werder power off noch reboot bewirken das die synology neu startet oder herunterfährt einzig das webmenü ist nicht mehr erreichbar.
Die kiste läuft weiter und das scripr ist auch nicht mehr erreichbar

cat >shutdown.cgi
#!/bin/sh
echo -e 'Content-type: text/html\n\n<html><head><title>Shutdown</title></head><body>'
poweroff
echo -e '</body></html>'
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
funktioniert das Skript mit einem anderen Linux-Command?

Itari
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
bei top lädt sich das script tot,

pwd geht und gibt den richtigen ort aus.
ls alle datein
selbst more /var/log/messages zeigt mir die log
auch ordner anlegen geht

nur die beiden dinge die ich brauche nicht :(
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
poweroff & <-- funktioniert das???

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
schau noch einmal nach (per 'id'), ob du auch der User 'root' bzw. '0' bist

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
so richtig verstehe ich das nicht, aber vielleicht hat es der poweroff ja auch recht schwer, sich gegen einen Webdienst durchzusetzen *gg*

was ich machen würde:

- IPKG installieren
- das Package, wo der 'at' drinne ist auch
- den at-Dienst starten
- austesten, ob ein at-Job die DS herunter fahren lässt (auf der Konsole)
- austesten, ob man den at-Job dann auch mit unserer Shell-HTML-Konstruktion aufrufen kann

Sinn: der at-Job sollte ohne Abhängigkeiten von einem Webdienst ausgeführt in der Lage Sein, wie auf der Konsole seine Arbeit zu verrichten ...

Anm. der at-Job ist (wie ein Cron-Job) für einmalige zeitlich verzögerte batch-Geschichten gedacht: at now + 1 minutes .... [http://linux.die.net/man/1/at]

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
könnte es nicht auch sein, dass allenfalls die Ausgabe nach dem reboot Kommando irgendwie zickt? Ich meine rein logisch kommt nach reboot ja eigentlich nichts mehr. wohin sollte es auch ausgegeben werden? Mal probiert im cgi File nur den reboot & reinzupacken und keinerlei weitere Ausgaben zu machen?
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
ok
-ipkg ist installiert
-at dienst habe ich über ipkg install at installiert


in den systeminfos sehe ich leider weder ipkg noch at dienst als installiert ist.

auf at bekomme ich schon mal befehle

at now + 1 minutes reboot
parse error. Last token seen: revoot
Garbled time


kannst du mir da weiter helfen

der trick mit

cat >shutdown.cgi
#!/bin/sh
echo -e 'Content-type: text/html\n\n<html><head><title>Shutdown</title></head><body>'
reboot

geht leider auch nicht weboberfläche offline
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
okay ich denke es geht via Web nicht so einfach, weil das reboot Kommando im Kontext des Apache Prozesses aufgerufen wird. Also schiesst reboot irgendwann den apache und damit sich selber ab ;-)
imho wirst du einen wrapper brauchen, sozusagen eine weitere Schicht um das Reboot Kommando z.B. ein Shellscript das direkt auf der DS gestartet wird und regelmässig ein File prüft ob das Kommando reboot drin steht. Dann schreibt dein cgi einfach reboot in das File und das Scipt auf der DS prüft das File und leitet den Reboot ein. Das müsste gehen weil das Script welches direkt reboot aufruft nicht unter dem Webserver läuft
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
verstehe ich das richtig ich erstelle 2 cgi das eine was den reboot auslöst und das 2. welches die cgi über das web startet??
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
nur 1 cgi und ein "echtes" direkt in der Shell gestartetes Script. Das cgi schreibt die Aufforderung zum reboot in das File und das Shellscript prüft dieses File regelmässig. Könnte z.B. so ausschauen
Code:
#!/bin/sh

while true ; do
 [ "x$(cat /pfad/zum/file)" = 'x' ] && sleep 10 && continue
 [ "$(cat /pfad/zum/file)" = 'reboot' ] && break
 sleep 10
done
echo > /pfad/zum/file && reboot
wenn du also in /pfad/zum/file reboot einträgst sollte spätestens 10 Sekunden später der reboot starten. Dieses Script müsste dann beim Booten der DS mittels eines Startscripts eingebunden werden. Wichtig wäre, dass in dem Startscript der Aufruf zu obigem Script mittel & hintendran erfolgt. Sonst bleibt dir die DS beim booten hängen!
Bevor du den Scriptaufruf aber in ein Startscript packst, solltest du das ganze natürlich direkt auf der Konsole erstmal ausgiebig testen

Allerdings ist der code nur so auf die Schnelle getippt und nicht getestet (geht also auf eigene Kappe ;-)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
auf at bekomme ich schon mal befehle

at now + 1 minutes reboot
parse error. Last token seen: revoot
Garbled time


kannst du mir da weiter helfen

probiere doch einmal

at now /sbin/poweroff

Itari
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
leider auch nicht :-(

at now - 1 minutes /sbin/poweroff
parse error. Last token seen: /
Garbled time

ups falsches kopiert

kommt aber aufs gleiche raus

at now /sbin/poweroff
parse error. Last token seen: /
Garbled time
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
sorry ... ich hab da die falsche Syntax im Kopf gehabt

echo "/sbin/poweroff" | at now

Itari
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
wenn das ganze in das cgi rein soll leider nein

cat >shutdown.cgi
#!/bin/sh
echo -e 'Content-type: text/html\n\n<html><head><title>Shutdown</title></head><body>'
echo "/sbin/poweroff" | at now
echo -e '</body></html>'

wenn ich /sbin/poweroff" | at now in die Kommentarzeilen eingebe kommt nicht nas> sondern nur >
 

chka

Benutzer
Mitglied seit
04. Mai 2010
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
ok
Rich (BBCode):
"
hat gefehlt mit "/sbin/poweroff" | at now fährt die kiste herunter über die Kommentarzeilen
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat