tassman pisze:
taki maly skrypcik ulatwiajacy mi zycie napisalem:
[...]
ale, po wlaczeniu go dla kogokolwiek ukazuje sie przypomnienie tylko raz, nastepnie juz nie widac przypomnienia.
Co prawda nie odpowiem dlaczego przypomnienie wyświetla się tylko raz (może zamiast -A powinieneś użyć -I), ale proponuję taka formę tego scriptu:
#!/bin/bash
help() {
echo "przypominacz V0.1 2007-04-30 (C) tassman 2006 dla NND"
echo "Włączanie i wyłączanie przypominania"
echo "--------------------------------------------"
echo "Uzycie:"
echo "przypomnienie parametr1 parametr2"
echo "parametr1 -> start stop check help"
echo "parametr2 -> 4 kwartet IP"
echo " "
}
# jeśli podano mniej niż 2 parametry zawsze wyświetlaj help i kończ script
if [ $# -lt 2 ]; then
help
exit 1
fi
# jesli pierwszy parametr nie jest start, stop lub check wyświetlaj help i kończ
if [ $1 != start -o $1 !=check -o $1 != stop ]; then
help
exit 1
fi
# sprawdzanie czy drugi parametr jest liczba naturalną i czy jest mniejszy od 255,
# jesli któryś z tych warunków nie jest spełniony wyświetl help i zakończ
liczba=`echo $2 | sed 's/[[:digit:]]//g'`
if [ ! -z $liczba ]; then
help
exit 1
else
if [ $2 -gt 255 ]; then
help
exit 1
fi
fi
case $1 in
start)
echo "Przypomnienia wlaczone dla 192.168.1.$2"
iptables -A PREROUTING -t nat -s 192.168.1.$2 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:82 -m limit --limit 60/h --limit-burst 1
echo " "
;;
check)
echo " "
echo "Uzytkownicy posiadajacy wlaczone przypomnienie"
iptables -t nat -L | awk '/82/ {print $4;}'
echo " "
;;
stop)
echo " "
echo "Zatrzymuje przypomnienie dla 192.168.1.$2"
iptables -D PREROUTING -t nat -s 192.168.1.$2 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:82 -m limit --limit 60/h --limit-burst 1
echo " "
;;
esac
exit 0
IMHO jest to czytelniejsze niż Twoja wersja z elifami (których nie lubię). a poza tym sprawdza poprawność i liczbę podanych parametrów. Script uwzględnia tylko pierwsze dwa parametry i ignoruje wszystkie nadmiarowe.
Poprawiłem ponadto linię w której w potoku użyłeś grep i awk... awk radzi sobie doskonale z funkcjami grepa i używanie ich w potoku nie ma, zazwyczaj, sensu.
UWAGA!! scriptu nie testowałem! Nie odpowiadam jeśli coś wybuchnie!