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.
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.