tassman pisze:
aaaaa... no pewnie ze nie, na mowe potoczna chcialem:
jesli pierwszy warunek jest start i drugi warunek jest dowolnym znakiem [w tym wypadku cyfra] to powoduje wywolanie iptables i w miejsce 192.168.1.(tu) wpada ten drugi znak.
#!/bin/sh
# sprawdzasz czy drugi parametr nie jest pusty
if [ ! -z $2 ]; then
# tymczasowa zmienna wraz z następnym warunkiem pozwalają
# sprawdzić czy drugi parametr jest liczbą
tmp=`echo $2 | tr -d '[[:digit:]]'`
if [ -z $tmp ]; then
# i ostatecznie sprawdzasz czy pierwszy parametr jest "start", a drugi
# mieści się w zakresie od 0 do 255 (możesz zmienić ten zakres).
# Jesli tak, to wywołujesz iptables
if [ $1 = start -a $2 -ge 0 -a $2 -le 255 ]; then
# tutaj wpisujesz regułki iptables
fi
fi
fi
Powyższe nie testowane, ale chyba powinno działać. Możliwe, że zamiast warunku [ ! -z $2 ] będzie trzeba sprawdzić czy są podane dokładnie dwa parametry wywołania scriptu. Robi się to warunkiem [ $# = 2 ]
tassman pisze:
################################
Zrobilem tak:
if [ $1 ]; then
echo "Przypomnienia wlaczone dla 192.168.1.$1"
iptables -A PREROUTING -t nat -s 192.168.1.$1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:82 -m limit --limit 60/h --limit-burst 1
fi
i poszlo, prosciej mysle.
a co będzie jeśli jako pierwszy parametr ($1) podasz np słowo "ala"? Wyjdzie ci taki adres IP - 192.168.1.ala... a jeszcze smieszniej będzie jesli jako parametr podasz spację...
tassman pisze:
A co zrobic jak bym chcial wpisywac jeden po drugim parametrze uruchamiajacym np i kazdy parametr dopisuje sie do regulki w skrypcie
skrypt 1 12 16 167 [kazda cyfra to IP],
nie do końca rozumiem, ale wydaje mi się, że pętla for załatwi ci sprawę.
Musisz tylko pamiętać, że script (a nie pętla for) może przyjąć maksymalnie 9 parametrów. Jesli będzie więcej to raczej bez pliku pomocniczego się nie obędzie...