Kleines Script - Wie schreiben?

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

kann mir jemand einen Ansatz geben, wie ich folgendes lösen kann?

Ich habe eine Datei, welche den Inhalt

Code:
$TTL 86400
domain.tld. IN SOA dns1.domain.tld. admin.domain2.tld. (
	2004122905
        10800
        3600
        604800
	86400
        )
domain.tld.	IN	NS	dns1.domain2.tld.
domain.tld.	IN	NS	dns2.domain2.tld.
; End SOA Header
;
; Do Not edit BIND db files directly.
; Use the administrative web user interface
; /admin/ -> Control Panel -> DNS Parameters
; Custom additions may be made by creating a file of the same name as this but
; with a; .include suffix.  Click Save Changes in the DNS web interface and
; the inclusion will be made.
; 
domain.tld.	in	a	XXX.XXX.XXX.XXX

Nun muss ich automatisiert diese Datei editieren, und zwar:

Der Inhalt der dritten Zeile muss komplett neugeschrieben werden und danach möchte ich automatisiert die IP-Adresse XXX.XXX.XXX.XXX gegen YYY.YYY.YYY.YYY ersetzen (das Ersetzen geht ja ganz leicht aber das mit der dritten Zeile, da finde ich keine Lösung).

Hoffe mir kann jemand helfen :D
 
Code:
root@acw-desktop2:/var/cache/bind# VAR=$(head -n3 zonefile|tail -n1); sed -i 's/$VAR/neuer_wert/' zonefile
root@acw-desktop2:/var/cache/bind# cat zonefile 
$TTL 86400
domain.tld. IN SOA dns1.domain.tld. admin.domain2.tld. (
	2004122905
        10800
        3600
        604800
	86400
        )
domain.tld.	IN	NS	dns1.domain2.tld.
domain.tld.	IN	NS	dns2.domain2.tld.
; End SOA Header
;
; Do Not edit BIND db files directly.
; Use the administrative web user interface
; /admin/ -> Control Panel -> DNS Parameters
; Custom additions may be made by creating a file of the same name as this but
; with a; .include suffix.  Click Save Changes in the DNS web interface and
; the inclusion will be made.
; 
domain.tld.	in	a	XXX.XXX.XXX.XXX

:(
 
Code:
VAR=$(head -n3 zonefile|tail -n1); sed -i "s/$VAR/neuer_wert/" zonefile

' gegen " austauschen, könnte klappen (ungetestet). Ich glaub die bash ersetzt Variablen nicht, wenn sie in einfachen Anführungszeichen stehen.
 
Code:
root@vps1:/var/log# test1="das ist ein test"
root@vps1:/var/log# echo "$test1"
das ist ein test
root@vps1:/var/log# echo '$test1'
$test1
root@vps1:/var/log#
Nööp :D
 
enthält $VAR denn deinen Timestamp?

Hallo, nicht direkt, nein.
Es muss <Jahr><Monat><Tag>< Kontinuierliche Zahl> sein, ist aber:
Code:
root@acw-desktop2:/var/cache/bind# VAR=$(head -n3 zonefile|tail -n1);
root@acw-desktop2:/var/cache/bind# echo $VAR
	2004122905
Also vor dem Inhalt ist noch ein Tab, wie kann ich den Loswerden? :D
 
Code:
root@acw-desktop2:/var/cache/bind# sed '3!d; s/[0-9]+/201203151230/' zonefile 
        2004122905
Da ist noch immer der Tab :(
 
Der Tab gehört dort auch hin.

Getestete und funktionierende Version:
Code:
sed -E '3!d; s/[0-9]+/201203151230/'
 
Last edited by a moderator:
Der Tab gehört dort auch hin.

Getestete und funktionierende Version:
Code:
sed -E '3!d; s/[0-9]+/201203151230/'

Ok, funktioniert
Wie schreibe ich aber nun den Inhalt genauso wie er ist wieder zurück? Immerhin gibt er mir ja nur die dritte Zeile aus :|
 
man sed
Code:
# GNU sed
sed -r '3!d; s/[0-9]+/201203151230/' -i /path/to/zone.file

# Other sed
sed -E '3!d; s/[0-9]+/201203151230/' -i '' /path/to/zone.file
 
Last edited by a moderator:
Das ist der Grund warum ich bind mit dlz mysql nutze, kein kompliziertes geändere...

Brauchen wir nicht. Ich muss nur ein einziges 'mal kurz die IP-Adressen und die dritte Zeile updaten, das wars. Aber naja, hat sich sowieso erledigt :D
 
Back
Top