Script probléma (tcpdump) - S.O.S.... !

Az alábbi script jött össze (a lényege, hogy adott paraméterekkel dumpokat készítsen tcpdump-pal).
Nagyon sürgős lenne vele elkészülnöm és két pontban totál elakadtam.

Az egyik: a $WORKDIR változó mindig üresen marad, hiába adom meg az indításnál a paraméterét (ahová mentse a dump file-okat)

A másik: a tcpdump parancs (a script forráskód vége felé) folyton beleköt valamibe, próbáltam betartani a gyári paraméter sorrendjét (lényeges-e ez egyáltalán ?), de rendszerint ilyesmit kapok:
-G: invalid packet count (ezt a -c opció után, azaz legjobb meglátásom szerint a -c után kapott számot és az azt követő -G kapcsolót egy paraméternek akarja venni és mivel a "-G" nem szám, hibát dob...)
Valaki le tudná nekem ellenőrízni és segíteni/kijavítani ? Mit csináltam rosszul ?
Ezer hála előre is !

(Szerk. Közben felfedeztem, hogy egyetlen változóban sem tárolja el az értéket...azaz mégsem veszi át a paramétereket értékeit
i) INTERFACE=${OPTARG};; #halozati interface valasztas
r) REPEAT_TIME=${OPTARG};; #milyen gyakran kezdjen uj file-t
w) WORKDIR=${OPTARG};; #hova mentse a dumpfile-okat
m) MAXFILES=${OPTARG};; #maximum hany dump file-t tartson meg
Ezek mind tök üresek, csak a while loop-ban tudom kiíratni az értékeiket. Mi lenne a megoldás ? :S)

A script:

#!/bin/bash
while getopts i:r:w:m: option
do
case "${option} "
in
i) INTERFACE=${OPTARG};; #halozati interface valasztas
r) REPEAT_TIME=${OPTARG};; #milyen gyakran kezdjen uj file-t
w) WORKDIR=${OPTARG};; #hova mentse a dumpfile-okat
m) MAXFILES=${OPTARG};; #maximum hany dump file-t tartson meg
esac
echo "Aktualis param: $option "--" $OPTARG" #debughoz
done
echo "Working directory: $WORKDIR" #ez valamiert mindig ures marad !
sudo tcpdump -i $INTERFACE -G $REPEAT_TIME -c $MAXFILES -w "/trace_%Y-%m-%d_%H:%M:%S.pcap"
exit 0

Hozzászólások

Eszembe jutott, hogy a while loop gyakorlatilag egy subshell, azért nem látja a változókat.
Áthidaltam a dolgot azzal, hogy a while loop-ban minden egyes iterációnál egy temp file-ba íratom sorrendben a script paramétereinek értékeit, aztán sed-del beolvastatom a loop-on kívül, így működik a dolog. :)

Nem csoda, hogy a tcpdump behülyült..nem is kapott semmilyen értékeket paramétereknek.
Tanulság: éjjel 2-kor már ne írjunk scriptet, ha nem munkahelyen vagyunk. :D

Ugyanakkor, ha valaki megírná, hogyan érhetném el a változókat a while loop-on kívül is, azt megköszönném. Export/declare nem oldja meg a dolgot..

Csak az archívum kedvéért: nem subshell...
De a másik fórumon már részletezték. :)

apropo tcpdump: őrá nem igaz, ami a tshark/wireshark esetén, hogy illetlenség root-ként futtatni? (ahogy elnézem, nem)

Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)