Hallo, On Thu, 20 Oct 2005 09:22:51 +0200 Raffael Schmid <raffael.schmid@yup.ch> wrote:
Ich mache das per awk, das ist aber nicht sehr variabel, da ich bei einem neuen PF mein Script ändern muss.... Gibt es einen Befehl um mir nur gerade diese zwei Regeln anzeigen zu lassen? Folgender Befehl ist wohl nicht ganz das Gelbe vom Ei....? $ iptables -vnxL forward_int | grep ACCEPT | grep all | awk '{print $2}' && iptables -vnxL forward_ext | grep ACCEPT | grep all | awk '{print $2}' && iptables -vnxL forward_dmz | grep ACCEPT | grep all | awk '{print $2}'
Och, naja, das grep ist eigentlich recht überflüssig: Awk ist ja eine pattern-matching-Sprache, hat daher die entsprechende Funktionalität schon eingebaut. Im Prinzip könnte man auch das Addieren und Mailverschicken mit awk machen. Z.B. (ungetestet): (iptables -vnxL forward_int; iptables -vnxL forward_ext; iptables -vnxL forward_dmz) | awk ' BEGIN { BYTES=0 } /\<ACCEPT\>/ { if ( $6 == "eth0" || $7 == "eth0" ) BYTES+=$2 } END { if ( BYTES["eth0"] > 5000000000 ) { print "Subject: Traffic-Warnung\n\nAchtung, auf Interface eth0 haben wir mehr als " BYTES["eth0"] " Traffic!" | sendmail root@localhost } }' erledigt das meiste gleich in awk (hier noch mit Check auf das richtige Interface in den Feldern 6 oder 7). Sogar das Auslesen der iptables ließe sich in awk machen (naja, also das Aufrufen von iptables, meine ich). Aber das geht dann langsam zu weit. Aufgrund solcher Basteleien lernt man aber ganz schnell awk. Es gibt kaum besseres, um in Textform vorliegende gleichartige Daten zu verarbeiten. Die man-Page von awk ist übrigens kurz und knapp, enthält aber alles wichtige. Ein Ausdruck derselben schadet also nie was. Gruß, -hwh