1:1 NAT brauche Hilfe bei der Erstellung eines Shellscripts

Dieses Thema im Forum "FreeBSD" wurde erstellt von LA_FORGE, 11.09.2011.

  1. #1 LA_FORGE, 11.09.2011
    Zuletzt bearbeitet: 11.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    Hi,

    ich brauche Hilfe bei der Erstellung eines Shellskripts, was nach OpenVPN Neueinwahl die Datei /var/db/opt1_ip parst (in dieser Datei steht nichts anderes drin als nur die IP) und diese neue IP dann in den Firewallregeln von FreeBSD ändert in einer vorhandenen Datei ändert, und zwar den String

    binat on openvpn from 10.130.201.24 to any -> <An die Stelle muss die neue IP hin>

    in der Datei /tmp/rules.debug

    Über Hilfe würde ich mich sehr freuen, kann leider kein Shellskript und auch überhaupt nicht programmieren :-(

    Vielen Dank im Voraus

    Stefan
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 underliner, 11.09.2011
    Zuletzt bearbeitet: 12.09.2011
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    Hallo LA_FORGE,

    ich hab mal ein wenig probiert und auf meinem Linux-System funkioniert es:

    Code:
    #!/bin/bash
    #
    
    # IP-Adresse auslesen
    
    ip="`grep "." /var/db/opt1_ip`"
    echo $ip
    
    
    # temporäre Datei anlegen und berichtigen
    
    search="binat on openvpn from 10.130.201.24 to any "
    grep -v "binat on openvpn from 10.130.201.24 to any" /tmp/rules.debug > /tmp/rules.debug.tmp
    
    echo $search $ip >> /tmp/rules.debug.tmp
    
    
    # wenn alles OK - dann Kommentarzeichen vor mv entfernen
    
    # mv /tmp/rules.debug.tmp /tmp/rules.debug
    
    exit 0
    
    In einen Editor kopieren und z.B. als firewall.sh abspeichern, mit 'chmod +x' ausführbar machen und mit 'sh firewall.sh' ausführen. Wenn die Datei '/tmp/rules.debug.tmp' deinen Vorstellungen entspricht, dann im Script das Kommentarzeichen vor 'mv' entfernen.

    Gruss underliner


    @ sinn3r
    Hast ja Recht, hab es schon berichtigt
     
  4. #3 LA_FORGE, 11.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    WOW super klasse vielen herzlichen Dank!!
     
  5. #4 underliner, 12.09.2011
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    Hallo LA_FORGE,

    erst einmal willkommen im Forum, und vielen Dank für deine Rückmeldung, 'WOW super klasse', dieser Äußerung entnehme ich, dass es geklappt hat und das ist schön zu wissen.

    Gruss underliner
     
  6. sinn3r

    sinn3r Law & Order
    Moderator

    Dabei seit:
    28.12.2006
    Beiträge:
    2.764
    Zustimmungen:
    0
    Ort:
    Wentorf
    Pfui. Pfui. Pfui.

    Mit 'chmod +x' machst du dein Skript ausführbar. Alles andere ist fahrlässig. Zumal es gar nicht ausführbar sein muss, wenn du es zum interpretieren eh nur an eine Shell ('sh foo') übergibst.

    Ein Skript von allem und jedem les- und schreibbar zu machen, dass dazu noch vermutlich root-Rechten (oder zumindest ziemlich weitreichenden) ausgeführt wird... merkst du es von alleine?
     
  7. #6 LA_FORGE, 12.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    Ja, geklappt hat's einwandfrei mit deinem Script. Allerdings ist FreeBSD für mich noch Neuland an der stelle, sorry, ich habe leider eine falsche Stelle genannt wo die IP ausgetauscht werden muss :-(

    Sie muss nicht in /tmp/rules.debug in dem String "binat on openvpn from 10.130.201.24 to any " geändert werden, sondern in

    Code:
    /cf/conf/config.xml:			<external>10.17.0.30</external>
    und
    /conf/config.xml:		        	<external>10.17.0.30</external>
    
    Die Quelle, wo die neue IP drin steht bleibt aber gleich ( /var/db/opt1_ip ) sie muss dann lediglich in den 2 Files oben zwischen dem Tag <external></external> überschrieben/ersetzt werden. Kannst du mir bitte noch so ein tolles Script basteln?

    Es tut mir leid, dass ich erst eine falsche Angabe gemacht habe, aber ich komme ursprünglich auch aus der Linux-Welt und iptables unterscheidet sich doch etwas mit dem Packetfilter von FreeBSD :-)

    Vielen Dank im Voraus

    Stefan
     
  8. #7 underliner, 12.09.2011
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    So LA_FORGE,

    ich habe das Script mal modifiziert:
    Code:
    #!/bin/bash
    #
    
    # IP-Adresse auslesen
    
    ip="`grep "." /var/db/opt1_ip`"
    echo $ip
    
    
    # temporäre Datei anlegen und berichtigen
    
    grep -v "<external>" /cf/conf/config.xml > /cf/conf/config.xml.tmp
    grep -v "<external>" /conf/config.xml > /conf/config.xml.tmp
    
    echo "<external>"$ip"</external>" >> /cf/conf/config.xml.tmp
    echo "<external>"$ip"</external>" >> /conf/config.xml.tmp
    
    
    # wenn alles OK - dann Kommentarzeichen vor mv entfernen
    
    # mv /cf/conf/config.xml.tmp /cf/conf/config.xml
    # mv /conf/config.xml.tmp /conf/config.xml
    
    exit 0
    Falls noch Leerzeichen vor "<external>" benötigt werden, dann am Besten selbst innerhalb der Anführungszeichen einfügen.

    Gruss underliner
     
  9. #8 LA_FORGE, 13.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    Vielen Dank!!
     
  10. #9 LA_FORGE, 13.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    hm mit dem neuen Script wird die Zeile mit der alten IP zwar gelöscht und die neue IP eingefügt, aber die Zeile steht dann ganz am Ende der XML-Datenstruktur, sie müsste aber

    Code:
              <onetoone>
                            <external>10.17.0.23</external>
                            <descr><![CDATA[Masquerading]]></descr>
                            <interface>opt1</interface>
                            <source>
                                    <address>10.130.201.24</address>
                            </source>
                            <destination>
                                    <any/>
                            </destination>
                            <natreflection>enable</natreflection>
                    </onetoone>
    
    zwischen den Tags <onetoone> und <descr> hin, damit's funktioniert.
     
  11. #10 underliner, 13.09.2011
    Zuletzt bearbeitet: 13.09.2011
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    Hallo Stefan,

    da hab ich jetzt auch ein wenig fummeln müssen, aber man wächst ja an den Aufgaben:

    Code:
    #!/bin/bash
    #
    
    # IP-Adresse auslesen
    
    ip="`grep "." /var/db/opt1_ip`"
    echo $ip
    
    
    # temporäre Datei anlegen und berichtigen
    
    cp /cf/conf/config.xml /cf/conf/config.xml.tmp
    cp /conf/config.xml /conf/config.xml.tmp
    
    sed -i 's/<external>\([0-9]\{1,3\}\.\)\{3,\}[0-9]\{1,3\}/<external>'"$ip"'/' /cf/conf/config.xml.tmp
    sed -i 's/<external>\([0-9]\{1,3\}\.\)\{3,\}[0-9]\{1,3\}/<external>'"$ip"'/' /conf/config.xml.tmp
    
    
    # wenn alles OK - dann Kommentarzeichen vor mv entfernen
    
    # mv /cf/conf/config.xml.tmp /cf/conf/config.xml
    # mv /conf/config.xml.tmp /conf/config.xml
    
    exit 0
    
    da wollen wir mal hoffen, das es jetzt funzt.

    Gruss underliner
     
  12. #11 LA_FORGE, 14.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    Vielen Dank.

    Jetzt kommt die Meldung

    Code:
    sed: 1: "/cf/conf/config.xml.tmp": command c expects \ followed by text
    sed: 1: "/conf/config.xml.tmp": command c expects \ followed by text
    
     
  13. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  14. #12 underliner, 14.09.2011
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    Hallo Stefan,

    dass wird am Unterschied zwischen GNU-sed und BSD-sed liegen.

    Hier mal eine Variante ohne Schalter:

    Code:
    #!/bin/bash
    #
    
    # IP-Adresse auslesen
    
    ip="`grep "." /var/db/opt1_ip`"
    echo $ip
    
    
    # temporäre Datei anlegen und berichtigen
    
    sed 's/<external>\([0-9]\{1,3\}\.\)\{3,\}[0-9]\{1,3\}/<external>'"$ip"'/' /cf/conf/config.xml > /cf//conf/config.xml.tmp
    sed 's/<external>\([0-9]\{1,3\}\.\)\{3,\}[0-9]\{1,3\}/<external>'"$ip"'/' /conf/config.xml > /conf/config.xml.tmp
    
    
    # wenn alles OK - dann Kommentarzeichen vor mv entfernen
    
    # mv /cf/conf/config.xml.tmp /cf/conf/config.xml
    # mv /conf/config.xml.tmp /conf/config.xml
    
    exit 0
    
    

    Gruss underliner
     
  15. #13 LA_FORGE, 14.09.2011
    LA_FORGE

    LA_FORGE Grünschnabel

    Dabei seit:
    11.09.2011
    Beiträge:
    7
    Zustimmungen:
    0
    Das ist mega genial was du da gebastelt hast!!!! Jetzt funzt es! Vielen herzlichen DANK!!
     
Thema:

1:1 NAT brauche Hilfe bei der Erstellung eines Shellscripts

Die Seite wird geladen...

1:1 NAT brauche Hilfe bei der Erstellung eines Shellscripts - Ähnliche Themen

  1. Brauche Hilfe bei Lösunge einer Aufgabe

    Brauche Hilfe bei Lösunge einer Aufgabe: In der Dateil /etc/passwd sind zeilenweise alle User aufgelistet. Der Name ist dabei vom Zeilenanfang bis zum ersten Doppelpunkt. Erstellen Sie...
  2. Brauche hilfe bei einen Shell Script "-eq Parameter"

    Brauche hilfe bei einen Shell Script "-eq Parameter": Hallo miteinander, bin Neuling in shell Programmierung und brauche etwas Hilfe: und zwar möchte ich einige Zeilen aus einer Datei "user.db"...
  3. Brauche hilfe von Profis mit opensuse 11.2

    Brauche hilfe von Profis mit opensuse 11.2: Irgend wie bekomme ich keine internet verbindung hin ob über kde manger oder manuell kann man es auch über der shell einrichten wäre nett wenn ich...
  4. Brauche dringend Hilfe nach System Rücksetzung

    Brauche dringend Hilfe nach System Rücksetzung: Hallo. Leider habe ich nicht viel Ahnung von Linux Programmen und habe nach einem Telefonat mit dem technischen Support von Hercules bei meinem...
  5. Prüfungsvorbereitung Posix Aufgaben, brauche Meinungen oder Hilfe,Danke

    Prüfungsvorbereitung Posix Aufgaben, brauche Meinungen oder Hilfe,Danke: Hallo Leute, habe dieses Semester noch eine Prüfung in Systemprogrammierung und wollte gerne hier die einzelnen Übungsaufgaben vorstellen bzw. mit...