Shutdown remote manuell und zeitgesteuert?

Status
Für weitere Antworten geschlossen.

fdfdfd

Benutzer
Mitglied seit
04. Mai 2015
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo Forenmitglieder,
ich nutze seit einiger Zeit eine DS214play (läuft mit der aktuellsten Firmware),
direkt per LAN-Kabel an eine Fritze 6360 angebunden.
Auf der NAS läuft der Advanced Power Manager. Dieser weckt die NAS jede Nacht von 2-3 Uhr,
damit von Androidgeräten Backups verschiedener Daten (Bilder, App-Daten, ...) synchronisiert werden
(foldersync, synchronize ultimate) und schickt sie anschließend wieder in den WOL-Zustand (alle LEDs aus, keine Geräusche,
Netzwerkcontroller wird in Router angezeigt).
So weit so gut.
Auch Wake On LAN klappt mithilfe von Apps (boxtogo, Fing, diverse wol) zuverlässig und komfortabel.
Was ich noch suche ist eine Mögichkeit das NAS per Widget wieder in den WOL-Zustand zu schicken, habe aber leider noch nix
passendes gefunden. Kann mir hier jemand einen Tip geben (per Widget wäre es natürlich am besten)?

Für Laptops habe ich Scripte erstellt (die ich erst heute Abend testen kann).

Für power on:
ether-wake -i eth0 MAC-Adresse xx:xx:xx...

Für power off:
plink -ssh -pw Passwort root@xxx.xxx.xxx.xxx poweroff


Kann das so überhaupt funktionieren?


Zudem würde ich gerne ein Script erstellen, welches das NAS automatisch nach xMinuten (z.B. 15 Minuten) wieder in den
WOL-Zustand (alle LEDs, Lüfter, Festplatten aus) schickt, sofern keine Zugriffe aktiv sind (sambashares (per quickpic),
Synchronisationen/Kopiervorgänge von Laptops/Smartphones oder Streams (TV, Laptop, Smartphone).



Ich habe dieses Script
entsprechend meinen Anforderungen versucht zu verändern. Vielleicht kann einer mal drüberschauen, ob ich Anfängerfehler
beim Kopieren eingefügt habe :)

Das Script speichere ich in einem gemeinsamen Ordner (Pfad: "/volume1/Scripte/script.sh") oder besser in
"/usr/local/etc/rc.d/"? Wo überlebt das Script auch Updates? Habe hier im Forum mehrfach von verschwundenen Scripten nach Updates gelesen.
Wie aktiviere ich das script? Über Systemsteuerung -> Aufgabenplaner -> Erstellen -> Benutzerdefiniertes Shell Script
(Nutzer: root PW: das vom admin)?





#!/bin/sh

LOGFILE="/volume1/Scripte/autoshutdown-script.log"
#LOGFILE=/dev/null
COUNTFILE=/volume1/homes/admin/bin/shutdown-counter

log() {
echo `date +%c` $1 >> $LOGFILE
}

cancel() {
[ -f $COUNTFILE ] && rm $COUNTFILE
sleep 5
exit 0
}

##########################################
# Hier ist Platz für die einzelnen Checks
##########################################

# Terminate early if stopfile exists
STOPFILE=/volume1/homes/admin/bin/shutdown-no
if [ -e $STOPFILE ]; then
log "Stopfile exists. Doing nothing."
cancel
fi

# Timecheck
uptime=$(cat /proc/uptime)
uptime=${uptime%%.*}
minutes=$(( uptime/60 ))
if [ $minutes -lt 15 ]; then
log "Online since only $minutes minutes. Doing nothing."
cancel
fi

# Check if there is a connection via Webinterface or in of the Apps (IPs der Smartphones und PCs eingetragen?)
#if netstat | grep '192.168.1.1:https\|192.168.1.1:5000\|192.168.1.1:5001\|192.168.1.1:5006\|192.168.1.1:9981\' | grep ESTABLISHED > /dev/null; then
# log "Active connection to HTTPS, WebDAV or other DSM App"
# cancel
#fi

# Check if one of the ACTIVEHOSTS has an open connection (IP-Adressen der zugriffsberechtigten Geräte eintragen?)
#ACTIVEHOSTS="192.168.1.11 192.168.1.14"
#for host in $ACTIVEHOSTS ; do
# if netstat -n | grep ' '$host':.*ESTABLISHED' > /dev/null; then
# log "$host currently accessing NAS"
# cancel
# fi
#done



# Pingcheck - should be performed last (IPs aller zugriffsberechtigten Geräte? Was genau bedeutet pingen - ob das Gerät erreichbar ist oder gerade zugreift auf das NAS?)
#PINGHOSTS="192.168.1.11 192.168.1.14"
#for host in $PINGHOSTS ; do
# if ping -c 1 -w 1 $host > /dev/null; then
# log "$host isn't offline"
# cancel
# fi
#done

##########################################
# und vorbei
##########################################

# Increment counter if all checks failed
echo >>$COUNTFILE
COUNTER=`ls -la $COUNTFILE | awk '{print $5}'`
log "NAS has been idle for $COUNTER checks"

# Shutdown NAS if counter has already been incremented 10 times
if [ $COUNTER -gt 2 ]; then
#/volume1/homes/admin/bin/pvr-poweron.py > /volume1/Scripte/test.log 2> /volume1/Scripte/fehler.log
log "shutdown Diskstation"
rm $COUNTFILE
#/sbin/poweroff
fi




Alternativ habe ich auch dieses Script hier im Forum gefunden, weiss aber wie oben erwähnt nicht genau was pingen bedeutet...

#!/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




Für Hilfestellungen wäre ich sehr dankbar.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Zudem würde ich gerne ein Script erstellen, welches das NAS automatisch nach xMinuten (z.B. 15 Minuten) wieder in den
WOL-Zustand (alle LEDs, Lüfter, Festplatten aus) schickt, sofern keine Zugriffe aktiv sind (sambashares (per quickpic),
Synchronisationen/Kopiervorgänge von Laptops/Smartphones oder Streams (TV, Laptop, Smartphone).

Warum per script? Seit DSM 5.1 (5.0?) kannst du im DSM in den Energieoptionen einstellen, dass die DS nach einem definierten Zeitraum nach Festplatten-Spindown herunterfährt (-> WOL).
 

fdfdfd

Benutzer
Mitglied seit
04. Mai 2015
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Die Option habe ich schon getestet. Bei mir schaltet sich das NAS nicht aus. Die oberste LED blinkt langsam und der Lüfter läuft auch weiter. Auch nach mehreren Stunden schaltet es sich nicht
"richtig" ab. Es ist dann auch nicht im WOL-Zustand, denn sobald ich auf einen share zugreife, ist das NAS sofort verfügbar.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Du hast aber auch den zweiten Haken noch gesetzt? Dass nach x Minuten im Ruhezustand (LED blinkt langsam) das NAS herunterfahren soll?
 

fdfdfd

Benutzer
Mitglied seit
04. Mai 2015
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Ja. Habe alle Kombinationen durchgetestet. Keine Reaktion. Dabei waren alle Laptops ausgeschaltet und Smartphones nicht im WLAN.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Keine Ahnung, bei mir funktioniert's. :-/
 

fdfdfd

Benutzer
Mitglied seit
04. Mai 2015
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Dann werde ich es heute Abend nochmal testen.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Alternativ habe ich auch dieses Script hier im Forum gefunden, weiss aber wie oben erwähnt nicht genau was pingen bedeutet...

Hallo letzteres Script stammt von mir und verrichtet seit Jahren klaglos seinen Dienst. Pingen ist wenn Du ein Netzwerkpaket zu einem Gerät schickst. Ist es angekommmen wird vom Empfänger mal simple ausgedrückt ein Pong zurück geschickt. Somit kann festgestellt werden ob ein Gerät noch an (bzw. erreichbar) ist.

In meinem Fall ist diese DS ein Medienserver der eben nur für das schauen von Filmen oder hören von Musik per WOl geweckt wird. Sind alle Verbraucher die in der HOSTS-Zeile angegeben sind ausgeschaltet geht der Medienserver dann automatisch in den Shutdown. In meinem Netzwerk sind noch andere Geräte vorhanden die die DS nicht zur Ruhe kommen lassen, weshalb die Lösung in den Energiesparoptionen für mich eher ungeeignet ist.

Alerdings sollte das Script wie schon von Dir erwähnt an einem updatesicheren Ort gespeichert werden. Beispielsweis /volume1/public.

Zum Start des selben brauchst Du aber noch ein Startscript. Beispielsweise folgendes:

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

Dieses sollte dann beispielsweise unter /usr/local/etc/rc.d abgelegt werden. Das dürfte dann aber (wahrscheinlich) als einziges kein Update überleben. Also für ein Zurückkopieren nach einem Update irgendwo eine Kopie aufbewahren.

Der Aufgabenplaner ist dafür uneeignet, da er bis Dato eine Ausführung nur beim Start der DS nicht zur Auswahl bietet. Was in diesem Fall nötig wäre, da ansonsten das Script öfters gestartet werden würde.

Nicht vergessen die Scripte auch mit chmod ausführbar zu machen. Zu dem ganzen Vorgang gibt es auch etwas im Wiki.

Gruß Frank

Edit: Hier noch die beiden Pfade und Namen der Scripte

/volume1/public/autoshutdown.sh
/usr/local/etc/rc.d/S99autoshutdown.sh
/
 

fdfdfd

Benutzer
Mitglied seit
04. Mai 2015
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
@Puppetmaster
Erst habe ich alle Funktionen in den Energieeinstellungen deaktiviert und wieder aktiviert - keine Funktion.
Dann alle Funktionen in den Energieeinstellungen deaktiviert, neugestartet und wieder aktiviert - keine Funktion.
Als letzte Lösung (ausser reset) alle Funktionen wieder deaktiviert, neugestartet, alle Funktionen aktiviert, wieder neugestartet und siehe da - es funktioniert.
Hatte es eigentlich schon aufgegeben, aber jetzt läuft es.
Danke für den Tipp.

@fpo4711
Da ich mich trotzdem in das scripten einarbeiten will, werde ich das Script testen.
Das mit chmod muss ich mir noch im Wiki anschauen.

Nochmal eine Nachfrage zum Pingen bzw. Pongen :)
Wird damit überprüft, ob ein Gerät noch über LAN/WLAN erreichbar ist oder ob es aktuell auf das NAS zugreift?
Ich frage, da die Smartphones ja stets im WLAN sind und somit auch immer einen Pong zurücksenden würden...
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.881
Punkte für Reaktionen
2.325
Punkte
829
Wird damit überprüft, ob ein Gerät noch über LAN/WLAN erreichbar ist oder ob es aktuell auf das NAS zugreift?
Ich frage, da die Smartphones ja stets im WLAN sind und somit auch immer einen Pong zurücksenden würden...

Ersteres, ein Zugriff auf die DS wird damit nicht überprüft. Es geht einfach nur darum, ob ein Gerät im Netz verfügbar ist. Das muss nicht so sein, auch nicht bei einem WLAN - z.B. wenn die IP-Nummer aus einem falschen Netz stammt und nicht geroutet werden kann. Ping kann allerdings auch durch eine Firewall gefiltert werden, so dass das Gerät verfügbar ist, ein Ping aber nicht durch kommt.
 
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