Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 35

Thema: kleines Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32

    kleines Problem

    Hallo

    ich hab das was kniffliges vor wo meine Kenntnisse nicht mehr reichen scheint mir.
    Problemstellung ist, auf einen hostnamen einen /usr/bin/host zu machen und die ausgelesene IP in eine Iptables Chain zu packen. Soweit so gut. Nun machte es aber wenig Sinn dies ständig zu tuen und alte Regeln nicht vorher zu löschen. Also quasi: Eben ausgelesene IP neuer als die vor 5 Minuten ? wenn nein dann mche garnix, wenn ja lösche die vorhin angelegte iptables Chain und ersetzte sie mit einer neuen und der actuellen IP

    Mein kläglischer technischer Lösungsansatz wäre demnach :

    Target="target_hostname"
    IP_ADRESSE=$(/usr/bin/host $TARGET)

    wenn neu (checken aller 5 Minuten) dann:

    $IPTABLES -t mangle -F TARGET //lösche alte Chain

    //bilde neu CHAIN
    iptables-t mangle -N Target (wobei noch 2-3 andere Regeln nötig wären wodurch man wohl den Iptables Part wieder in ne Variable packen müsste)

    wenn gleich dann mache schlicht nichts


    Wäre super wenn mir da jemand Hilfestellung bieten könnte


    Viele Grüße
    Frank

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Benutze doch einfach

    eine Hilfsfile zum Speichern der IP und sed zum aendern der Firewall- Regeln.
    sed --> http://www.tu-harburg.de/rzt/tuinfo/...pt/node52.html
    kleines Beispiel:
    Code:
    alte_IP=`cat hilfsfile.txt`
    if ($alte_IP -eq $neue_IP ); then
    sed -e 's/$alte_IP/$neue_IP/g' firewall.sh > neue_firewall.sh
    fi
    T;o)Mes
    Geändert von tomes (02-01-2003 um 19:43 Uhr)
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32

    Re: Benutze doch einfach

    [QUOTE]Original geschrieben von tomes
    alte_IP=`cat hilfsfile.txt`

    stimmt, nur wie krieg ich die da rein ?

    if ($alte_IP -eq $neue_IP ); then
    sed -e 's/$alte_IP/$neue_IP/g' firewall.sh > neue_firewall.sh
    fi

    und was steht in der firewall.sh ?
    ich verstehs leider nicht und meine Kenntnisse sind mangelhaft in der Beziehung


    das Prinzip leuchtet mir aber ein


    Viele Grüße
    Frank

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Re: Re: Benutze doch einfach

    Original geschrieben von Frank#
    alte_IP=`cat hilfsfile.txt`
    stimmt, nur wie krieg ich die da rein ?
    z.B. vielleicht mit -->
    echo "$IP_ADRESSE" > hilfsfile.txt
    und was steht in der firewall.sh ?
    Das ist dein Firewallscript, ich weiss ja nicht wie das bei dir heist.

    T;o)Mes
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32
    Merci, alles klar. Fehlt nur noch die IP korrekt aus zu filter von dem Befehl host zb kernel.org denn dann kommt als Antwort

    hbash-2.05b$ host kernel.org
    kernel.org has address 204.152.189.116


    Viele Grüße
    Frank

  6. #6
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Also mit'n vim könnte man so alles bis auf'd Adresse weglöschen, vieleicht hilft dir das ja weiter (kenn mich mit shell-scripting nicht so aus, muss ich mir auch mal anschaun wenn ich zeit hab):

    :%s/^.* address \(\d\+\.\d\+\.\d\+\.\d\+\)$/\1/

    das funktioniert aber genauso:

    :%s/^.* address \(.*\)$/\1/
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  7. #7
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Oder einfach nur mit awk

    Original geschrieben von Frank#
    Merci, alles klar. Fehlt nur noch die IP korrekt aus zu filter von dem Befehl host zb kernel.org denn dann kommt als Antwort

    hbash-2.05b$ host kernel.org
    kernel.org has address 204.152.189.116


    Viele Grüße
    Frank
    Code:
    hbash-2.05b$ host kernel.org | awk '{ print $4}'
    204.152.189.116
    Also insgesamt
    Code:
    hbash-2.05b$ host kernel.org | awk '{ print $4}' > hilfsfile.txt


    T;o)Mes
    Geändert von tomes (04-01-2003 um 15:13 Uhr)
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  8. #8
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32
    Ja Danke, das bringt mich fast ans Ziel. Hab mir jetzt folgendes zusammengebastelt wo es noch an einer einzigen Stelle kränkelt.

    host kernel.org | awk '{ print $4}'
    Kernelip=???
    IPTABLES="/usr/local/sbin/iptables"
    $IPTABLES -t mangle -F Kernel //bestehende Cain löschen
    $IPTABLES -t mangle -X Kernel //richtig löschen
    $IPTABLES -t mangle -N Kernel //neue anlegemn
    $IPTABLES -t mangle -A PREROUTING -i ppp0 -s $Kernelip -j RETURN
    $IPTABLES -t nat -A Kernel -j Action

    das ganze per Cron alle paar Minuten ausgeführt reich mir eigentlich und kostet nix.

    Ich hab eineiges versuch ... per >> in ein File schreiben geht,aber das brauch ich garnicht und mit Kernelip="host kernel.org | awk '{ print $4}'" funtioniert nicht. Ich hänge echt fest

    Viele Grüße
    Frank

  9. #9
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Würd sagen folgendes müsste gehn:

    Code:
    Kernelip=´host kernel.org | awk '{ print $4}'´
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  10. #10
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32
    leider nicht, es kommt

    ./test2: kernel.org: command not found


    Viele Grüße
    Frank

  11. #11
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32
    habs

    Kernelip=$(/usr/bin/host kernel.org | awk '{ print $4}')

    und danke nochmal

    Viele Grüße
    Frank

  12. #12
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    Original geschrieben von Frank#
    leider nicht
    Dann hast Du keine Backticks (`...`) verwendet.
    Setz den Befehl in $(...), damit geht´s auch:

    Code:
    ip=$(host kernel.org | awk '{ print $4}')
    Gruß micha

    [edit]zu langsam [/edit]
    IRC: irc.euirc.net #tux

  13. #13
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Schoen

    das es *funct* Zum Abschluss noch deine *Ueberpruefung*
    Also quasi: Eben ausgelesene IP neuer als die vor 5 Minuten ?
    Deshalb doch die Hilfsfile
    Code:
    #!/bin/sh
    #
    if [ -e hilfsfile.txt ] ; then
        echo "File existiert"
    else
         ´host $1 | awk '{ print $4}' > hilfsfile.txt `
    fi
    alte_ip=`cat hilfsfile.txt`
    neue_ip=´host $1 | awk '{ print $4}'
    if [ "$neue_ip -eq $alte_ip ] ; then
        echo "IP hat sich nicht geandert"
    else
        IPTABLES="/usr/local/sbin/iptables" 
        $IPTABLES -t mangle -F Kernel //bestehende Cain löschen 
        ....
        $IPTABLES -t mangle -A PREROUTING -i ppp0 -s $neue_ip -j RETURN 
        $IPTABLES -t nat -A Kernel -j Action
    fi
    exit 0
    $1 ist der erste Parameter das dem Script mit uebergeben wird.
    Also z.B. dein Script heist neue_ip.sh, dann lautet der Eintrag in der cronttab -->
    neue_ip.sh kernel.org

    T;o)Mes
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  14. #14
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32
    Dankesehr vielmals das macht es natürlich noch viel perfekter
    und ich freue mich drüber

    Viele Grüße
    Frank

  15. #15
    Registrierter Benutzer
    Registriert seit
    11.10.2002
    Beiträge
    32

    Re: Schoen

    Original geschrieben von tomes
    das es *funct* Zum Abschluss noch deine *Ueberpruefung*

    Deshalb doch die Hilfsfile
    Code:
    #!/bin/sh
    #
    if [ -e hilfsfile.txt ] ; then
        echo "File existiert"
    else
         ´host $1 | awk '{ print $4}' > hilfsfile.txt `
    fi
    alte_ip=`cat hilfsfile.txt`
    neue_ip=´host $1 | awk '{ print $4}'
    if [ "$neue_ip -eq $alte_ip ] ; then
        echo "IP hat sich nicht geandert"
    else
        IPTABLES="/usr/local/sbin/iptables" 
        $IPTABLES -t mangle -F Kernel //bestehende Cain löschen 
        ....
        $IPTABLES -t mangle -A PREROUTING -i ppp0 -s $neue_ip -j RETURN 
        $IPTABLES -t nat -A Kernel -j Action
    fi
    exit 0
    $1 ist der erste Parameter das dem Script mit uebergeben wird.
    Also z.B. dein Script heist neue_ip.sh, dann lautet der Eintrag in der cronttab -->
    neue_ip.sh kernel.org

    T;o)Mes

    Guten Tag

    ich hab mal dein Script ausgetestet und werde leider nur mit Fehlermeldungen überhäuft. Hab dann mehrere Zeichen geändert bis es ging. Mit der Ausnahme das wenn sich die IP geändert hat er immer noch sagt echo "IP hat sich nicht geandert"
    Also alles läuft ohne Fehlermeldung bis zum Check.

    Hier die Ausgabe mit /bin/sh -x

    + '[' -e hilfsfile.txt ']'
    + echo 'File existiert'
    File existiert
    ++ cat hilfsfile.txt
    + alte_ip=204.152.189.116
    ++ host rs.servebeer.com
    ++ awk '{ print $4}'
    + neue_ip=80.129.111.130
    + '[' '123.123.123.123 -eq 456.456.456.456' ']'
    + echo 'IP hat sich nicht geandert'
    IP hat sich nicht geandert
    + exit 0


    Viele Grüße
    Frank
    Geändert von Frank# (06-01-2003 um 16:49 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •