Runterfahren, wenn Download beendet?

Eigentlich suche ich oft nach dieser Möglichkeit. Man lädt was von einem ftp, aus dem Usenet oder vielleicht auch im torrent. Es soll ja noch Leute geben, die ihren PC (oder in meinem Fall Laptop) ausschalten, wenn sie ihn nicht benutzen, also nachts, oder tagsüber, wenn man arbeitet. Die wenigsten Programme bieten aber die Möglichkeit hierzu. Die vermutlich einfachste Möglichkeit ist wohl die Überwachung des Downstreams in regelmäßigen Abständen.
Grob habe ich das mal als bash Script realisiert.

#!/bin/sh
#poedel_PCS
#
#Dieses Skript checkt im Halbminutentakt den Traffic an eth0
#vom aktuellen Wert ziehen wir den Wert der vorigen Messung ab
#Wir erhalten Bytes pro 30 Sekunden
#multipliziert mit 2 erhalten wir Bytes pro Minute
#sinken diese unter 2000 Bytes/min schrumpft der maxgaps Zaehler um 1
#erreicht er 0 wird der Terminierungsbefehl ausgeloest
#geht der zeahler wieder ueber 2000, wird maxgaps zurückgesetzt
grenze=2000
jnt=0
maxgaps=5
#Berechne Geschwindigkeit und speicher in Variable float
while [ $maxgaps -gt 0 ]; do
float=`awk '/eth0/ {print $2}' /proc/net/dev`
# konvertiere float in integer
int=$(printf "%.f" $float)
avr=$((($int - $jnt)*2))
jnt=$int
if [ $avr -lt $grenze ]; then
echo " $grenze"
maxgaps=5
fi
echo "$avr Bytes/min -- Zaehler: $maxgaps"
sleep 30
done
echo "Der Downstream liegt seit 2,5min unterhalb der geforderten Grenze"
echo "Der Shutdown des Systems wird eingeleitet"
echo "Er kann binnen 3min durch shutdown -c gecanceled werden"
sudo shutdown -h +3 #wird das Skript als User ausgeführt, muß er das shutdown Recht besitzen

~ von poedel - März 2, 2010.

Hinterlasse einen Kommentar