Zeitabfrage, Aktion zeitgesteuert laufen lassen

  • Ersteller TomTomNavigator
  • Erstellt am
T

TomTomNavigator

Grünschnabel
Hallo!

Ich habe ein Downloadscript, bei welchem ich die Donloadgeschwindigkeit zeitgesteuert drosseln möchte.
Es soll der Zeitraum eingegeben werden, in dem der Download auf FullSpeed laufen soll (z.B. 02.00-13.00 oder auch 14.00 bis 06.00 Uhr)
Ist nicht so einfach mit den 24 Stunden ... ^^
Ich hab hier mal was zusammengeschustert, vielleicht kann ja jemand mal drüberschauen obs so funktioniert, oder wie es einfacher geht. Hab da aber schon ein bisschen rumüberlegt.
count1 ist die Anfangszeit, count2 die Endzeit. (z.B. count1=0200)

Code:
      time=`date +"%H%M"`
      if [ "$count2" -gt "$count1" ]; then
        if [ "$time" -ge "$count1" ]; then
          if ["$time" -le "$count2" ]; then
            dllimit="1000000k"
            echo "Bandbreite wird NICHT begrenzt!"    
          else 
            dllimit=$limit
            echo "Bandbreite wird begrenzt auf $limit!"  
          fi
        fi
      fi 
      if [ "$count1" -gt "$count2" ]; then
        if [ "$time" -ge "$count1" ]; then
          dllimit="1000000k"
          echo "Bandbreite wird NICHT begrenzt!"
        elif [ "$time" -le "$count2" ]; then
          dllimit="1000000k"
          echo "Bandbreite wird NICHT begrenzt!"
        else 
          dllimit=$limit
          echo "Bandbreite wird begrenzt auf $limit!"
        fi
      fi
 
Auf den ersten und zweiten Blick sind Dein Code schon korrekt aus, wobei ich versucht waere, die Intervallabfrage im ersten Block in eine Abfrage zu packen:
Code:
if [ $count1 -le $time && $time -le $count2 ]; ...

Ich weiss nicht, ob folgendes effizienter ist - anschaulicher ist es bestimmt nicht, dafuer allerdings sicherer- Du kaemest mit einem if-Block aus:

1) reche alle Zeiten in Minuten um
2) addiere zu allen Zeiten (24*60 - $count1), um $count1 auf 0Uhr zu setzen
3) berechne $time und $count2 module ($count2 % (24*60))

Dann ist immer $count1 < $count2 und Du kannst abfragen
Code:
if [ $count1 -le $time && $time -le $count2 ] ; then -> begrenzen

den zweiten Block benoetigst Du dann nicht mehr.

Wie gesagt, sehr einsichtig ist der Code damit nicht, doch vielleicht sicherer, weil es keine Ausnahmen geben sollte.
 
Danke, ich werd mich damit noch ein bisschen spielen. :)
 

Ähnliche Themen

Port generieren, wenn nicht dann

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Shellskript - Fehler in Cron

Variableninhalt wird nicht gespeichert

Tonerstand via SNMP auslesen - Problem

Zurück
Oben