start/stop- script problem
hallo liste, ich stehe vor einem für mich unlösbaren problem: das folgende script benutze ich zum starten von tbf qdiscs. durch starten von "trafficcontrol start 90" starte ich eine qdisc mit 90 kbit. wenn ich aber nur "trafficecontrol start" sage, läuft das programm weiter in die 2. schleife, bzw. ignoriert den $9 block glaub ich sogar. FRAGE: wie kann ich am besten eine leere $2 variable abfangen, d.h. wenn nach dem $1 parameter keine datenrate angegeben wird ? bin auch für sonstige verbesserungen dankbar, ist nämlich meine erstes script (zumindest das erste, das aus mehr als 2 zeilen besteht. Vielen Dank! #!/bin/sh ############################################# ## ## ## Script zum Starten von qdiscs ## ## zum drosseln der Netzwerkverbindung ## ## Copyright maX Bauer - INSIGHT Education ## ## ## ############################################# case "$2" in $2) rate=$2 echo "You entered a rate of $rate kbit/s" ;; $9) echo "usage of this script is: {start|stop|status|restart} {Datarate 1-512}" exit 2 ;; esac case "$1" in ########################## start ################################### start) if test -z "`tc qdisc show`" then echo "activating qdisc..." tc qdisc add dev eth0 root tbf rate "$rate"kbit latency 50ms burst 1540 QDISC=`tc qdisc show` echo $QDISC else echo "qdisc already active" exit fi ;; ## stop ## stop) if test -z "`tc qdisc show`" then echo "qdisc not active" exit else echo "deactivating qdisc..." tc qdisc del root dev eth0 fi ;; ## status ## status) if test -z "`tc qdisc show`" then echo "qdisc laeuft nicht" exit else QDISC=`tc qdisc show` echo $QDISC fi ;; ## restart ## restart) if test -z "`tc qdisc show`" then echo "qdisc not active, activating it now..." tc qdisc add dev eth0 root tbf rate "$rate"kbit latency 50ms burst 1540 QDISC=`tc qdisc show` echo $QDISC else echo "restarting qdisc..." tc qdisc del root dev eth0 tc qdisc add dev eth0 root tbf rate "$rate"kbit latency 50ms burst 1540 QDISC=`tc qdisc show` echo $QDISC fi ;; *) echo "usage of this script is: {start|stop|status|restart} {Datarae 1-512}" exit 1 ;; esac -- SET THE CONTROLS FOR THE HEART OF THE SUN
--- maX Bauer
FRAGE: wie kann ich am besten eine leere $2 variable abfangen, d.h. wenn nach dem $1 parameter keine datenrate angegeben wird ?
if test "$2" = "" echo "<irgendeine Fehlermeldung>" <brich das script ab> else <mach irgendwas sinnvolles> fi HTH Volker __________________________________________________________________ Gesendet von Yahoo! Mail - http://mail.yahoo.de Möchten Sie mit einem Gruß antworten? http://grusskarten.yahoo.de
Danke Volker für Deinen Vorschlag. Hab's jetzt doch anders gelöst. Ich bin während dem surfen zufällig über den simplen Befehl read gestolpert. Hier meine Lösung: .... case "$1" in start) if test -z "`tc qdisc show`" then ##################### THAT'S IT ######################################## read -p "Bitte gib einen hier die Datenrate ein (.. KBit/s): "rate #Zeige das Prompt -p und lese Daten für die Variable ein ##################### THAT'S IT ######################################## echo "activating qdisc..." tc qdisc add dev eth0 root tbf rate "$rate"kbit latency 50ms burst 1540 QDISC=`tc qdisc show` echo $QDISC else echo "qdisc already active" exit fi ;; ..... Volker Tanner wrote:
--- maX Bauer
schrieb: FRAGE: wie kann ich am besten eine leere $2 variable abfangen, d.h. wenn nach dem $1 parameter keine datenrate angegeben wird ?
if test "$2" = "" echo "<irgendeine Fehlermeldung>" <brich das script ab> else <mach irgendwas sinnvolles> fi
HTH Volker
__________________________________________________________________
Gesendet von Yahoo! Mail - http://mail.yahoo.de Möchten Sie mit einem Gruß antworten? http://grusskarten.yahoo.de
-- SET THE CONTROLS FOR THE HEART OF THE SUN
participants (2)
-
maX Bauer
-
Volker Tanner