bash Skript... mir fehlen Ideen.

Post Reply
Message
Author
Max

bash Skript... mir fehlen Ideen.

#1 Post by Max »

folgendes Problem:
Ich will verschiedene Variablen einlesen und über eine Schleife diese an ein Programm weitergeben.

Beispiel
A1=127.0.0.1
A2=111
A3=0
A4=1023:

B1=192.168.0.1
B2=25
B3=172.168.0.10
B4=22

Wie bekomme ich eine Schleife hin, die sagen wir mal, ipchains im ersten Durchlauf A1-A4 übergibt, im 2. Durchlauf B1-B4
usw...

sollte dann so in etwa wirken :
ipchains -A input -i eth1 -s $A1 $A2 -d $A3 $A4 -j ACCEPT
im nächsten Durchlauf dann das gleich mit $B1 statt $A1 usw...

Intention bin zu faul fünzig mal quasi dieselbe Zeile in zu hacken, bzw finde ich das sehr unelegant.
Fällt da jemanden spontan was zu ein?

Thanx Max
PS. Sorry, falls das das falsche Forum ist....

Jochen

Re: bash Skript... mir fehlen Ideen.

#2 Post by Jochen »

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
grep -v '^ *#' meine_firewall_regeln | while read SRCIP SRCPORT DESTIP DESTPORT ; do
ipchains -A input -i eth1 -s $SRCIP $SRCPORT -d $DESTIP $DESTPORT -j ACCEPT
done
</font><hr></pre></blockquote>

In meine_firewall_regeln stehen pro Zeile die vier Werte wie beim read-Kommando angegeben. Zeilen mit führenden "#" (dürfen zuerst auch noch Blanks stehen) werden ignoriert. Man will ja Kommentare in so ein File stecken.

War das das, was Du wolltest?

Jochen

Max

Re: bash Skript... mir fehlen Ideen.

#3 Post by Max »

danke dir Jochen.
Es ist zumindesten eine Idee ;<!--no-->-)
hmmm...
Bei mir steckt in _meinen_ Firewallregeln noch allerhand anderer Kram.
z.B. IP-Nummern, Devices usw.
Ich habe es als skript angelegt und es wird von der eigenltichen Firewall zu Beginn aufgerufen:

. regeln.conf

Ich will natürlich ungern noch eine Datei pflegen...
Aber ich denke mal in der Pipe noch ein grep rein der explizit die gewünschten Regeln liefert, dürfte es bringen.

Gruss MAx

Max

Re: bash Skript... mir fehlen Ideen.

#4 Post by Max »

nochmals Danke, denn es klappt wunderbar!
Lasse die entsprechenden Zeilen mit #@ anfangen und greppe nur diese aus.
So wird auch direkt der Rest aussen vor gelassen. (Ausser natürlich irgendeine Zeile fängt reinzufällig mit #@ an)

Das nenne ich elegant ;<!--no-->-)
Gruss Max

Jochen

Re: bash Skript... mir fehlen Ideen.

#5 Post by Jochen »

Dann mach's halt als Here-Skript (und awk):
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
awk '
$0 !~ /^ *#/ {
cmd = "ipchains -A input -i eth1 -s " $1 " " $2 " -d " $3 " " $4 " -j ACCEPT"
system(cmd)
} ' <<EOF
127.0.0.1 111 0 1023
192.168.0.1 25 172.168.0.10 22
EOF

exit 0
</font><hr></pre></blockquote>

Natürlich kannst Du anstelle von 4 Werten auch noch das Interface und ACCESS/REJECT/DENY mit dazunehmen. Dann musst Du das Kommando nur mit 6 Variablen statt mit 4 zusammensetzen.

Jochen

Max

Re: bash Skript... mir fehlen Ideen.

#6 Post by Max »

*g* awk, voll Lustig.

Da habe ich ja überhaupt keine Ahnung von. Bis jetzt habe ich mich immer vor gedrückt.
Aber es klappt so wunderbar.
mit grep "^#@" /etc/regeln.conf | while read n a b c d e ; do
ipchains.....
done
klappt es wunderbar $n enthält dann #@ und im Rest stecken die Werte. Habe es noch um das Protokoll erweitert. Bei mir enthalten fast alle Regeln ACCEPT weil sonst sowieso alles verboten ist.
Interface brauche ich auch nicht.
Ich habe eine ipchains Kette entworfen die mir für diesen Fall dann gleich auch den Verkehr für rein und raus regelt.
So muss ich nur noch in regeln.conf angeben welche IPs,Port und davon Ziel und Quelle und jetzt noch Protokoll.
So bleiben die Regeln an sich im Regel Skript, und der Syntax in der Firewall.
Gruss Max

hugenay

Re: bash Skript... mir fehlen Ideen.

#7 Post by hugenay »

hi max,
du koenntest ja auch deine config datei folgendermassen gestalten:

ALLOW=SMTP
192.168.0.1 0:65535 172.168.0.10 25

usw.; sed sagst du dann, er soll nach ALLOW suchen, und die darauffolgende zeile (ueber die while schleife) dann an ipchains weitergeben. Nicht schlecht daran ist, dass du dann ueber die jeweils vorhergehende zeile mittels ALLOW=POP, ALLOW=SSH etc. deine config datei schoen uebersichtlich bleibt <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/sh
sed -ne '/ALLOW/{n
p
}' firewall.conf | while read SRCIP SRCPORT DESTIP DESTPORT
do
ipchains -A input -i eth1 -s $SRCIP $SRCPORT -d $DESTIP $DESTPORT -j ACCEPT
done
</font><hr></pre></blockquote>

Max

Re: bash Skript... mir fehlen Ideen.

#8 Post by Max »

jetzt auch noch sed???
awk und sed??
Ne lass mal.
Danke Hugh.
Aber mir ist immer noch am wohlsten wenn ich weiss was abgeht.
Und um mich jetzt noch in sed und awk reinzuarbeiten fehlt mir die Zeit....<img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
Mein Problem habe ich gelösst und bin recht zufrieden...
Dafür habe ich schon wieder andere, was auch sonst...
Muss ne Software vorgaukeln Debian sei RedHat....
Gruss und Dank an alle!
Schönes, heisses Wochenende noch.
Max

Post Reply