Hallo,
tomtomtom hat jetzt im anderen Beitrag geantwortet.
äH... und das soll ich jetzt im terminal eingeben und hier posten?
Genau.
Skript um die Onlinezeit zu kontrollieren.
Folgenden zusätzliche Pakete müssen installiert werden um optische und akustische Hinweise zu bekommen:
libnotify-bin
mplayer-nogui
Installation im Terminal:
sudo apt-get install mplayer-nogui libnotify-bin
Das Skript ist universell anwendbar und muss mit drei Strartparametern, der zu überwachenden Schnittstelle, dem gewünschten Zeitlimit in Minuten und der Zeit für eine Alarmwiederholung (optional), aufgerufen werden. Wird der dritte Wert nicht angegeben erfolgt eine Alarmwiederholung im Minutentakt.
Skript erstellen:
gedit online-timer.sh
Inhalt einfügen:
#!/bin/bash
## Online-Timer
## Elektronenblitz63 ubuntuusers.de 2010
## published under GPL v3
# Libnotify settings
TITLE="Online-Timer:"
WARNING="Zeitlimit erreicht"
ERROR="Fehler - Parameter nicht angegeben"
LOGO=/usr/share/icons/hicolor/48x48/apps/gnome-obex-server.png
# Sounds
LoginSound=/usr/share/sounds/ubuntu/stereo/service-login.ogg
LogoutSound=/usr/share/sounds/ubuntu/stereo/service-logout.ogg
WarnSound=/usr/share/gnome-games/sounds/gnometris.ogg
# allg. Variablen
Iface=$1
Warntime=$2
connect=3
Starttime=$(date +%s)
Timeexceed=1
Pause=10
# Prüfung Übergabeparameter
if [ "$1" = "" ]; then
echo "Schnittstelle und/oder Zeitlimit wurde nicht angegeben"
notify-send -i $LOGO "$TITLE" "$ERROR"
exit
elif [ "$2" = "" ]; then
echo "Schnittstelle und/oder Zeitlimit wurde nicht angegeben"
notify-send -i $LOGO "$TITLE" "$ERROR"
exit
fi
# Zeit Alarmwiederholung
if [ "$3" = "" ]; then
Repetition=1
else
Repetition=$3
fi
# Loop
while true; do
# Startzeit bestimmen
ZeitAktuell=$(date +%s)
Differenz=$(($ZeitAktuell - $Starttime))
Minuten=$(($Differenz / 60))
# Default-Gateway und Scnittstelle abfragen
route="`route -n | egrep UG | awk {'print $8'}`"
# Verbindungsprüfung
if [ "$connect" = 1 ]; then
connect=1
elif [ "$route" = $Iface ]; then
notify-send -i $LOGO "$TITLE" "Verbindung aufgebaut, starte Timer"
mplayer -quiet $LoginSound
connect=1
Starttime=$(date +%s)
Pause=20
sleep $Pause
fi
if [ "$connect" = 0 ]; then
connect=0
Starttime=$(date +%s)
elif [ "$route" != $Iface ]; then
notify-send -i $LOGO "$TITLE" "keine Verbindung"
mplayer -quiet $LogoutSound
connect=0
Timeexceed=1
WARNING="Zeitlimit erreicht"
Pause=10
sleep $Pause
fi
# Zeitprüfung
if [ "$Warntime" = $Minuten ]; then
notify-send -i $LOGO "$TITLE" "$WARNING"
mplayer -quiet $WarnSound
Warntime=$[$Warntime + $Repetition]
Timeexceed=$[$Timeexceed + $Repetition]
fi
if [ "$Timeexceed" = 1 ]; then
WARNING="Zeitlimit überschritten"
sleep $Pause
else
WARNING="Zeitlimit um $Timeexceed Minuten überschritten"
sleep $Pause
fi
done
exit
Abspeichern und ausführbar machen:
chmod +x online-timer.sh
Testen. Ich habe nur die Möglichkeit dies mit der WLAN-Schnittselle (wlan0) ausprobieren zu können.
./online-timer.sh wlan0 15 2
Das Skript überwacht im Beispiel also die Schnittstelle wlan0 mit einem Zeitlimit von 15 Minuten und einer Warnwiederholung von 2 Minuten. Nach Ablauf der Zeit erscheint eine Hinweismeldung auf dem Bildschirm und es wird ein Warnton abgespielt. Das wiederholt sich dann im eingestellten Takt bis die Verbindung abgebaut wird.
Das Skript kann man natürlich an die eigenen Bedürfnisse anpassen.
Hintergrundwissen: Shell/Bash-Skripting-Guide für Anfänger - Benachrichtigungsdienst - MPlayer