2016-07-13 4 views
1

Das Problem mit meiner Infrastruktur ist die SMTP-Server-IP-Adresse ist dynamisch .. Ich benutze Vyatta Firewall & Ich versuche ein Skript zu schreiben, die für die SMTP IP alle 60 Minuten überprüft und wenn die SMTP-IP geändert wird, sollte es automatisch aktualisieren die Firewall-Regeln (Konfiguration) ..Wie füge ich Zeilen in einem Bash-Skript mit dem Befehl sed an?

#!/bin/bash 

SMTP=$(nslookup smtp.sendgrid.net | awk -F': ' 'NR==6 { print $2 }') 
SMTP_IP=x.x.x.x 

if [ $SMTP != $SMTP_IP ] 
then 
??? 
else 
echo "GREEN" 
fi 

Meine Firewall-Regeln sieht wie folgt aus:

rule 979 { 
     destination { 
      address "Current SMTP IP" 
     } 
     outbound-interface bond1 
     source { 
      address 10.x.x.x 
     } 
     translation { 
      address 200.x.x.x 
     } 
    } 

ich mein Skript möchte die Firewall-Regeln aus der vorherigen Regel aktualisieren .. Beispiel:

. 
. 
.  
rule 978 { 
    destination { 
     address "NEW SMTP IP" 
    } 
    outbound-interface bond1 
    source { 
     address 10.x.x.x 
    } 
    translation { 
     address 200.x.x.x 
    } 
} 

Ich bin ein Netzwerk-Typ & haben einige Grundkenntnisse in Skripting. Kann mir jemand helfen, dies mit einem Bash-Skript zu lösen ???

+0

Ich habe bisher nichts versucht .. Versucht, sed Befehl zu verwenden, aber ich habe nicht das gewünschte Ergebnis .. – clement

Antwort

0

Wenn ich Ihre Frage verstehe, möchten Sie eine andere IP-Adresse in Ihren Regeln in der "Adresse" Zeile unter dem Wort "Ziel" ersetzen. So etwas wie das:

#! /usr/bin/awk -f 

/destination/ { N = NR + 1 } 

NR == N && /address/ && index($0, OLD_IP) { 
    pos = index($0, OLD_IP) 
    print substr($0, 1, pos), NEW_IP 
    next 
} 
{ print } 

Wir suchen eine Zeile mit "Ziel", und notieren Sie die nächste Zeilennummer. In der nächsten Zeile suchen wir nach "Adresse" und sehen, ob die alte IP-Adresse dort erscheint. Wenn dies der Fall ist, drucken wir eine geänderte Regel mit der neuen IP-Adresse. Sonst nur drucken.

Ausgeführt als

$ awk -v OLD_IP=x.x.x.x -v NEW_IP=${SMTP} -f rules.awk firewall_rules 

es den Trick tun sollten.

+0

Der Ersatz funktionierte teilweise (es gab 2 Leerzeichen vor der neuen IP) .. und die Regel Nummer hat nicht ändern (von 979 bis 978) .. Danke und schätze deine Hilfe !! – clement

Verwandte Themen