Wake on LAN modifiezieren

Status
Für weitere Antworten geschlossen.

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Hallo Forum,

ich würde gerne die Wake on Lan Funktion meines NAS (Servers) etwas modifizieren.

Modifizierung:
Am Client würde ich ein Skript in den Autostart einfügen, welches automatisch beim Starten des System das Magic Paket an den Server schickt.

Das Ausschalten des Servers würde ich im Server einstellen, sprich, der Server pinged alle paar Minuten den Client an, ob dieser noch aktiv im Netz ist.

Das ganze Problem:
Der Server wird nicht nur von einem Client benutzt, sodass dies sich auch automatisch abschalten würde, wenn ein anderer Client gerade zugreift.
Dies könnte man umgehen, in dem man dem Server die Anweisung zum Runterfahren gibt, wenn auch der Server von der eingetragenen IP geweckt wurde.

Gibt es hierzu schon ansatzweise Scripts, die ich benutzen kann? Bin leider nicht der Experte für Scripting.

Ist es überhaupt möglich mein Vorhaben zu realisieren?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Das ganze Problem:
Der Server wird nicht nur von einem Client benutzt, sodass dies sich auch automatisch abschalten würde, wenn ein anderer Client gerade zugreift.
Dies könnte man umgehen, in dem man dem Server die Anweisung zum Runterfahren gibt, wenn auch der Server von der eingetragenen IP geweckt wurde.
Das würde allerdings ein Problem erzeugen, wenn der Server durch einen Client geweckt wurde und zu einem späteren Moment ein weiterer Client auch den Server nutzt.

Schau Dir einmal im Wiki dieses Script an - da kannst Du mehrere konfigurierte Clients anpingen. Solange einer von Ihnen anwortet, bleibt der Server an, er fährt erst dann herunter, wenn keiner der Clients mehr antwortet.
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Könnte man das ganze denn nicht mit einem If-Befehl realisieren?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Na, dann schreib's um und stell es als Alternative ins Wiki :)
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Haha, ich hatte mir eigentlich eine Bejahung von dir erhofft :)
Ich versuche etwas zu basteln. Falls es wirklich ansatzweise funktionieren sollte, werde ich auf alle Fälle das Skript hier posten, um bessere Vorschläge zu bekommen.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Bitteschön. Nur die IP's anpassen und fertig.

Rich (BBCode):
#!/bin/sh
# shutdown the DS if other network devices are not available anymore
#

# List of hosts to check for ping
# 29=Mac Mini / 27=iMac / 15=PC / 90=DenonX4500 / 91=DenonDBT
HOSTS='192.168.44.29 192.168.44.27 192.168.44.15 192.168.44.90 192.168.44.91'

# Cycle for check
#
CHECKTIME=10

# Startdelay for emergency stop
#
STARTDELAY=600

# Max-Pakets to send
#
MAXPAKETS=3

# ************************************ END SETTINGS ***********************************
                                 
echo "Start autoshutdown"                          

# Wait startdelay-times for kill this prozess 
# Without the DS shutdown if you have a not valid IP configured and the DS was unusable
# so you can kill that prozess before shutdown
# 
sleep $STARTDELAY

# Init
OFF=0

while [ $OFF == 0 ]; do
	OFF=1 
	for HOST in $HOSTS; do
	ping -c $MAXPAKETS $HOST > /dev/null			
		if [ $? == 0 ]; then
			# Host available = no shutdown
			OFF=0
			sleep $CHECKTIME
		fi
	done
done

# beeps 3x 

echo 2 > /dev/ttyS1;
sleep 1
echo 2 > /dev/ttyS1;
sleep 1
echo 2 > /dev/ttyS1;

echo Shutting down
poweroff

Gruß Frank
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Wow, also erst ein mal einen super vielen Dank :)

Ist das genau das, wonach ich gesucht hatte?
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Eine kleine Frage noch.
In welchen Ordner muss ich den Skript einfügen:
/etc/rc oder /usr/syno/etc/rc.d
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Ich würde es an Deiner Stelle unter /usr/local/etc/rc.d/ ablegen (den Ordner musst Du eventuell per Hand erst noch anlegen).
Du kannst es prinzipiell auch unter /usr/syno/etc/rc.d/ ablegen, doch dann geht es bei einem DSM-Update verloren.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo,

ich habe zu diesem Zweck ein kleines Startscript unter /usr/syno/etc.defaults mit dem Namen S99autoshutdown.sh mit folgendem Inhalt

Rich (BBCode):
#!/bin/sh

SHUTDOWNSCRIPT="/volume1/public/autoshutdown.sh"
                                                                       
case "$1" in                                                                      
	start)                                                                  
		echo "Start autoshutdown"                          
		$SHUTDOWNSCRIPT &                           
		;;                                                                      
	stop)		                                                                   
		killall $(basename "$SHUTDOWNSCRIPT")                             
		;;                                                                      
	restart)                                                                
		$0 stop                                                         
		sleep 1                                                         
		$0 start                                                        
		;;                                                                      
esac

Das Startscript überlebt allerdings kein Update. Dieses startet das Script im Hintergrund! Wichtig damit sich auch die Weboberfläche wieder korrekt meldet. War glaube ich ein Problem unter 4.3 Wie Du dem obigen Pfad entnehmen kannst liegt dann das eigentliche Script unter /volume1/public und das überlebt immer ein Update. Alternativ kannst Du auch andere Pfade nutzen. Diese hab ich jetzt nicht im Kopf, sind aber im Wiki beschrieben.

Nicht vergessen das Execute-Flag zu setzen.

Gruß Frank
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Was hat die die Nummer hinter dem S zu bedeuten bei den ShellSkripten?
Spielt es eine Rolle oder gibt es etwas zu beachten?
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Was hat die die Nummer hinter dem S zu bedeuten bei den ShellSkripten?
Spielt es eine Rolle oder gibt es etwas zu beachten?

Das gibt die Reihenfolge an in der abgearbeitet wird. Somit ist beispielsweise S99 ziemlich am Ende was auch Sinn bringt da ja beispielsweise die Netzwerkverbindungen auch schon oben sein sollten.

Gruß Frank
 

armut

Benutzer
Mitglied seit
20. Okt 2013
Beiträge
91
Punkte für Reaktionen
0
Punkte
0
Das gibt die Reihenfolge an in der abgearbeitet wird. Somit ist beispielsweise S99 ziemlich am Ende was auch Sinn bringt da ja beispielsweise die Netzwerkverbindungen auch schon oben sein sollten.

Gruß Frank

Was würde passieren, wenn ich zwei verschiedene Autostart-Skripte hätte, die verschiedene Funktionen haben und sich auch in unterschiedlichen Ordnern befinden?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Unterschiedliche Ordner werden in der Regel zu unterschiedlichen Zeiten aufgerufen und abgearbeitet.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Was würde passieren, wenn ich zwei verschiedene Autostart-Skripte hätte, die verschiedene Funktionen haben und sich auch in unterschiedlichen Ordnern befinden?

Tja, das kannst nur Du sagen. Weis ja nicht was deine Scripte machen :)

Prinzipiell kannst Du mehrere Startscripte anlegen natürlich mit unterschiedlichen Namen. Somit kann man dann auch mal eines unabhägig starten/stoppen. Dafür sind ja die Parameter start und stop. Du könntest aber auch weitere Zeilen in einem Startscript einfügen wo dann verschiedene Scripte aufgerufen werden. Da gibts unendlich Möglichkeiten.

Gruß Frank
 

RobMetal

Benutzer
Mitglied seit
12. Nov 2014
Beiträge
32
Punkte für Reaktionen
0
Punkte
6
Wieso eigenltich dieser Aufwand?

Die Station kann doch dahingehend eingestellt werden, dass sich diese nach einer zuvor definierten Zeit automatisch herunterfährt. Der Server währe wieder erreichbar wenn ein MAgic Paket voon einem der Cleints gesendet würde?
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Wieso eigenltich dieser Aufwand?

Die Station kann doch dahingehend eingestellt werden, dass sich diese nach einer zuvor definierten Zeit automatisch herunterfährt. Der Server währe wieder erreichbar wenn ein MAgic Paket voon einem der Cleints gesendet würde?

Hast Du auch den Post #1 gelesen und verstanden?

Gruß Frank
 

bo2221

Benutzer
Mitglied seit
21. Mai 2015
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
wie muss die Endung der Datei heißen? Und wäre es möglich solange noch downloads Aktive in der Download Station sind das die DS nicht aus geht? Geht das?
 

bo2221

Benutzer
Mitglied seit
21. Mai 2015
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hab das ganze jetzt soweit eingebunden die S99autoshutdown.sh liegt unter /usr/syno/etc.defaults, und die autoshutdown.sh liegt unter /volume1/public. im volume1 Ordner musste ich den Ordner public anlegen. Was ich auch nicht verstehe, was meinst du mit Execute-Flag setzen?

Danke für deine Hilfe
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.634
Punkte für Reaktionen
2.040
Punkte
829
Damit ist etwas wie

Rich (BBCode):
chmod 740 /volume1/public/autoshutdown.sh

gemeint. Die Datei muss ausführbar sein. Dafür muss man die Rechte entsprechend setzen. Geht auch per WinSCP.
 
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