Wake on LAN modifiezieren

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

armut

Benutzer
Registriert
20. Okt. 2013
Beiträge
91
Reaktionspunkte
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?
 
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.
 
Könnte man das ganze denn nicht mit einem If-Befehl realisieren?
 
Na, dann schreib's um und stell es als Alternative ins Wiki :)
 
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.
 
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
 
Wow, also erst ein mal einen super vielen Dank :)

Ist das genau das, wonach ich gesucht hatte?
 
Eine kleine Frage noch.
In welchen Ordner muss ich den Skript einfügen:
/etc/rc oder /usr/syno/etc/rc.d
 
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.
 
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
 
Was hat die die Nummer hinter dem S zu bedeuten bei den ShellSkripten?
Spielt es eine Rolle oder gibt es etwas zu beachten?
 
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
 
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?
 
Unterschiedliche Ordner werden in der Regel zu unterschiedlichen Zeiten aufgerufen und abgearbeitet.
 
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
 
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?
 
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
 
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?
 
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
 
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