[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Komfortabler Shutdown, ohne root, auch von Windows aus?



On Sun, 27 Feb 2005 13:45:57 +0100
Elvis Cehajic <lists@nihil.ch> wrote:

> Hi,
> Deine idee mit dem Dämon ist etwas abwegig, du wirst es nicht
> schaffen, eine sicherere software als SSH zu schreiben. Eigentlich
> spricht nichts gegen die Methode, sich schnell über ssh einzuloggen
> und den Router herunterzufahren. (ev. als normaler User und halt mit
> sudo ausführen) Das lässt sich übrigens auch automtisieren, müsstest
> dazu mal googeln, wie's genau geht.
> 
> Hier meine weiteren Ideen dazu:
> 1. Dämon der überprüft ob die Clients noch laufen und gegebenenfalls
> en router herunterfährt.
> Vorteil: Recht einfach zu implementieren
> Nachteil: Dämon muess deaktiviert werden wenn der Router ohne Clients 
> laufen soll (z.B: Downloads, Filesharing, etc.)

Genau diese Lösung habe ich bei mir laufen.
Nachdem ich alles vom Server per NFS mounte, muß der Server *nach* den
Clients runtergefahren werden, weshalb alle andere Lösungen per
remote-Zugriff nichts bringen (und ausserdem : wenn man's mal vergisst,
muß man den Client wieder hochfahren, damit man den Server runterfahren
kann... recht unpraktisch).
Skript ist unten attached (stammt von einem Kollegen). Tut nichts
anderes als ein ping, und schaut, ob noch einer der Clients antwortet.
Falls keine Antwort innerhalb von 10 Minuten, dann halt. Warum 10
Minuten ? 1. weil der Client manchmal beim Booten ein fsck durchführt
und 2. weil ich manchmal den Client reboote -> nicht zu wenig Zeit
lassen, bevor halt !

Zusätzliche Lösung : Hadware-Lösung, um die Kiste runterzufahren. 5 Euro
Kosten für denjenigen, der auch Löten kann. Beschreibung gibt's unter
http://main.linuxfocus.org/~guido/#sled (sled Programm von Guido
Socher). Damit kann ich jederzeit den Server per Knopfdruck runterfahren
(wenn ich keine 10 Minuten warten will)

Joel

--autoshut.sh--

#!/bin/sh
#
#       autoshut        -       poweroff if no remote host
#
#set -x

ping_stat=0                             # assume local host connected
end_time=0                              # current time until shut down
inc_time=30                             # time between connection tests
hold_time=300                            # max (=30 min) time until shut
down
local_hosts="client1 client2"        # local hosts list

(until [ $end_time -gt $hold_time ]; do # shut down time reached?
  until [ $ping_stat -eq 1 ]; do        # no more local host connected?
    ping_stat=1                         # assume no local host connected
    for host in $local_hosts; do        # test local hosts
      ping -c 1 -i 2 -q $host > /dev/null
      ping_stat=`expr $? \& $ping_stat` # =0 if host connected
    done
    if [ $ping_stat -eq 0 ]; then       # if local host connected
      end_time=0                        # reset current time until shut
down
    fi
    sleep $inc_time                     # pause between connection tests
    end_time=`expr $end_time + $inc_time` # increment current time to
shut down
  done
  ping_stat=0                           # assume reconnected local hosts
done
                                        #echo jetzt kommt poweroff
poweroff)
exit 0



Reply to: