Hmmm - ich versteh da ein paar Dinge nicht :
1)
Zitat:
case "$1" in
stop)
echo "Shutting down firewall..."
$IPTABLES -F
$IPTABLES -F -t mangle
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -X -t mangle
$IPTABLES -X -t nat
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
echo "...done"
;;
status)
echo $"Table: filter"
iptables --list
echo $"Table: nat"
iptables -t nat --list
echo $"Table: mangle"
iptables -t mangle --list
;;
restart|reload)
$0 stop
$0 start
;;
start)
echo "Starting Firewall..."
echo ""
|
Ich weiss dass das eine Fallunterscheidung ist die das erste Argument des Firewall-Scripts betrifft.
Abhängig von diesem werden die in den case Abfragen aufgelisteten Kommandos ausgeführt.
Jedoch - müsste doch das gesamte Script in jeder case Abfrage beendet werden oder nicht ?
Wenn er jetzt eingibt "firewall2 start" - gibt er mit echo die Meldungen aus und fängt dann an das Script nach unten hin abzuarbeiten.
Wenn er eingibt "firewall2 stop" - passiert doch genau dasselbe - er flusht die rules - gibt die Meldung aus - und arbeitet das Script weiter ab, ich versteh nicht wie das funktioniert.
Denn wenn er "firewall2 stop" eingibt - muss das Script nach Abarbeiten des "stop case" beendet werden.
2)Worauf beziehen sich diese Abfragen hier :
Zitat:
### Internal Interface:
## Get internal interface from command-line
## If no interface is specified then set $DEFAULT_INTIF as INTIF
if [ "x$3" != "x" ]; then
INTIF=$3
else
INTIF=$DEFAULT_INTIF
fi
echo Internal Interface: $INTIF
|
Etwa auf alle folgenden Kommandos ?? - Wie ist festgelegt welches Kommando damit gemeint ist ?
Ausserdem : wer sagt dass ich später den Interfacenamen als 3. Argument verwende - kann doch auch als 2. oder 4. nehmen....
Zitat:
|
gefragt wird, ob die zeichenkette "x$3" ungleich der zeichenkette "x" ist. das ist nur dann der fall, wenn die variable $3 leer ist. also mit anderen worten, existiert ein dritter kommandozeilenparameter, erhält die variable intif diesen wert. im anderen fall erhält intif ein defaultwert.
|
Hmm - wofür steht dieses "x" - ich weiss dass ichs schon mal in der man page zu bash gelesen hab - aber ich finds jetzt beim besten Willen nimmer - und in meinem "Linux in a Nutshell" stehs auch net drinn *gr*
Hmmm - wenn ich annehme dass "x" für "String" steht - müsste es dann nicht heissen wie folgt:
gefragt wird, ob die zeichenkette "x$3" ungleich der zeichenkette "x" ist. das ist nur dann der fall, wenn die variable $3 NICHT leer ist. ???
Denn der "x" String ist ja leer wie du sagtest - also kann "x$3" nur dann ungleich "x" sein wenn in $3 was drinnsteht.
Oder hab ich da jetzt was falsch verstanden ?
--qu