Hallo 
da ich im Netz nichts gefunden habe was meinen Ansprüchen genügt ich habe mir ein kleines Script zusammengestellt, das meinen Linux Server automatisch herunterfahren soll wenn keine Clients mehr Online sind. Dazu soll das Script per Cron alle 5 Minuten ausgeführt werden und die IPs, die in einer Konfigurationsdatei hinterlegt sind überprüfen.
Leider bekomme ich das mit dem Cronjob nicht hin. Vielleicht kann mir ja jemand von euch helfen. Das Script soll alle 5 Minuten ausgeführt werden.
Ich hänge das Script noch an falls da Interesse besteht. Manuell getestet funktioniert es einwandfrei.
Sorry für mein holpriges Englisch in den Kommentaren
Distri ist Debian Squeeze
Gruß, Chris
da ich im Netz nichts gefunden habe was meinen Ansprüchen genügt ich habe mir ein kleines Script zusammengestellt, das meinen Linux Server automatisch herunterfahren soll wenn keine Clients mehr Online sind. Dazu soll das Script per Cron alle 5 Minuten ausgeführt werden und die IPs, die in einer Konfigurationsdatei hinterlegt sind überprüfen.
Leider bekomme ich das mit dem Cronjob nicht hin. Vielleicht kann mir ja jemand von euch helfen. Das Script soll alle 5 Minuten ausgeführt werden.
Ich hänge das Script noch an falls da Interesse besteht. Manuell getestet funktioniert es einwandfrei.
Sorry für mein holpriges Englisch in den Kommentaren
Distri ist Debian Squeeze
Code:
#!/bin/bash
#Clients Filename. Insert your Clients here. One line per Host without Empty Lines
CLIENTS_DATEI=auto-shutdown.ips
#Get Clients from File
CLIENTS=`cat $CLIENTS_DATEI`
#Setting the Counter for Online Clients to a defined Value
CLIENTS_ONLINE=0
#How many tries before Shutdown
VERSUCHE=2
#Status File
STATUSDATEI=power.status
#Making Status File and Filling with a defined Value if Empty
touch $STATUSDATEI
test -s $STATUSDATEI
if [ $? != 0 ]
then echo 0 > $STATUSDATEI
fi
#Getting how many Tries already Done from the Statusfile
BISHERIGE_VERSUCHE=`cat $STATUSDATEI`
for i in $CLIENTS
do
ping -c1 $i
if test $? -eq 0
then
CLIENTS_ONLINE=`expr $CLIENTS_ONLINE + 1`
fi
done
if [ $CLIENTS_ONLINE -eq 0 ]
then
BISHERIGE_VERSUCHE=`expr $BISHERIGE_VERSUCHE + 1`
if [ $BISHERIGE_VERSUCHE -eq $VERSUCHE ]
then
echo "System wird heruntergefahren"
beep -f 1000 -l 500 -r 3
rm $STATUSDATEI
/sbin/halt
else
echo $BISHERIGE_VERSUCHE > $STATUSDATEI
fi
else
echo 0 > $STATUSDATEI
fi
Gruß, Chris