Automatisches Herunterfahren wenn kein Ping möglich: Unterschied zwischen den Versionen

Aus
Zeile 47: Zeile 47:
             # shutdown DS
             # shutdown DS
             poweroff
             poweroff
            fi
        fi
       fi
       fi
sleep $waittime
sleep $waittime

Version vom 3. September 2010, 16:59 Uhr

Installation von Software, die nicht von Synology kommt geht immer auf eigenes Risiko. 
Zum Teil sind dabei tiefe Eingriffe ins System nötig und das muss über die Konsole erledigt werden. 
Dabei besteht das Risiko von Fehlmanipulationen die bis zur Neuinstallation der DS führen können. 
Und dabei ist das Risiko sehr groß, dass auch die Partitionen mit Userdaten formatiert werden müssen.

Also alles was ihr macht geht auf Eure eigene Kappe :-)

Wenn man keine Lust hat, die DiskStation beispielsweise über Nacht laufen zu lassen (Stromsparen, Lautstärke, Lampen) und auch keine Lust hat oder vergisst diese abends herunterzufahren, habe ich ein Script geschrieben, welches die DS automatisch herunterfährt falls EIN Netzwerkgerät (PC, Router…) für eine bestimmte Zeit nicht verfügbar ist.

Voraussetzungen

Ich gehe in diesem Artikel davon aus, dass der geneigte Leser weiß:

  • wie man sich per Telnet/SSH auf die DS einloggt
  • wie man den vi-Editor bedient
  • wie man einstellt bzw. dass man ICMP (ping) auf dem Zielgerät zulässt. Es wird empfohlen dies vorher von der DiskStation mit "ping ip-adresse" oder "ping name" zu testen
  • muss jeder ping durchkommen, wenn das Zielgerät online ist

Hinweis

Es erfolgt kein Hinweis irgendwelcher Art, bevor die DS heruntergefahren wird. Man sollte sich daher gut überlegen:

  • wie hoch die Zeit (in Sekunden) der Variable waittime sein sollte; lieber am Anfang etwas höher und dann langsam absenken
  • ob man es als Startscript einträgt

Installation

Kopiere folgendes Script in eine Datei bspw. autoshutdown.sh:

#!/bin/sh
# shutdown the DS if another network device is not available anymore
#
# VARIABLES TO EDIT
# targetpingdevice: network device (eg. router or pc) as reference (name or IP)
# waittime (in seconds): time between each ping (for pc: use min. reboot time)
targetpingdevice=
waittime=

while true; do
      ping -c 1 $targetpingdevice > /dev/null
      if [ $? == 1 ]; then
         sleep $waittime
         ping -c 1 $targetpingdevice > /dev/null
         if [ $? == 1 ]; then
            # shutdown DS
            poweroff
         fi
      fi
sleep $waittime
done;

Anschließend sollte mit chmod 755 autoshutdown.sh die Rechte gesetzt werden.

Erstellen des Startscripts

Erstelle das Startscript in /usr/syno/etc/rc.d damit es beim Hochfahren der DS gestartet wird. Ich habe dafür die Datei S100autoshutdown.sh mit folgendem Inhalt erstellt:

#!/bin/sh                                                                       
case "$1" in                                                                      
        start)                                                                  
                echo "Starting autoshutdown script..."                          
                /volume1/private/autoshutdown.sh &                           
        ;;                                                                      
        stop)                                                                   
                killall autoshutdown.sh                                         
        ;;                                                                      
        restart)                                                                
                $0 stop                                                         
                sleep 1                                                         
                $0 start                                                        
        ;;                                                                      
esac
 

The End

Ich hoffe dieser Artikel ist verständlich und hilfreich. Wer Verbesserungen hat, ist gerne eingeladen diese hier einzupflegen.