Aus Bind-Zonefiles HTML-Übersicht kreieren

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Aus Bind-Zonefiles HTML-Übersicht kreieren

Beitrag von feltel » 18.08.2006 07:31:37

Kennt jemand ein Tool, Script oder nen kryptischen Perl-Oneliner, um aus einem Bind-Zonefile eine Übersicht über die dort konfigurierten IP-Adressen zu machen, z.B. Sortiert nach Hostnamen oder aufsteigend nach IP-Adresse?

_mh_
Beiträge: 171
Registriert: 10.07.2006 11:52:28

Beitrag von _mh_ » 18.08.2006 12:25:58

Hallo,

Code: Alles auswählen

cat /etc/bind/192.168.zone | grep "\.$" | awk 'BEGIN{print "<html><head></head><body><table>"}{if($3 == "PTR"){host=$4;gsub(/\.$/,"",host);print "<tr><td>" host "</td><td>" $1 "</td></tr>" } } END { print "</table></body></html>"} '
loest dass vielleicht dein Problem ? Ausgabe waere sowas in der Art:

Code: Alles auswählen

<html><head></head><body><table>
<tr><td>gateway</td><td>1.0</td></tr>
<tr><td>phoenix</td><td>6.0</td></tr>
<tr><td>firebird</td><td>6.1</td></tr>
<tr><td>singularity</td><td>7.0</td></tr>
<tr><td>savy</td><td>4.0</td></tr>
<tr><td>warden</td><td>5.0</td></tr>
<tr><td>wigwam</td><td>101.0</td></tr>
</table></body></html>
?

das Awk script in ner lesbaren form:

Code: Alles auswählen

BEGIN {
     print "<html><head></head><body><table>"
            }
{
    if($3 == "PTR")
    {
          host=$4;
          gsub(/\.$/,"",host);
          print "<tr><td>" host "</td><td>" $1 "</td></tr>" 
     } 
} 
END { 
   print "</table></body></html>"
} 
wenn du nach jedem tag noch ein \n einfuegst wird der html-code sogar lesbar... ;)

Wenn das nich so ganz is was du suchst, dann sag bescheid, das Teil laesst sich sicher auf deine Beduerfnisse zuschneiden ;)

/EDIT: oehm, wer lesen kann is klar im Vorteil... sortiert... hmm, sekunde *bastel*

_mh_
Beiträge: 171
Registriert: 10.07.2006 11:52:28

Beitrag von _mh_ » 18.08.2006 13:12:30

So, jetzt die korrigierte Version mit sorting. Sorry fuer den ersten post...

Code: Alles auswählen

cat inp.txt | awk -v sorthost=1 -v ipPrefix="192.168" -v hostSuffix="blubb.com" -f test.awk
liefert:

Code: Alles auswählen

<html><head></head><body><table>
<tr><td>airgate.blubb.com</td><td>192.168.1.1</td></tr>
<tr><td>firebird.blubb.com</td><td>192.168.1.6</td></tr>
<tr><td>gateway.blubb.com</td><td>192.168.0.1</td></tr>
<tr><td>muellbox.blubb.com</td><td>192.168.0.3</td></tr>
<tr><td>phoenix.blubb.com</td><td>192.168.0.6</td></tr>
<tr><td>savy.blubb.com</td><td>192.168.0.4</td></tr>
<tr><td>singularity.blubb.com</td><td>192.168.0.7</td></tr>
<tr><td>warden.blubb.com</td><td>192.168.0.5</td></tr>
<tr><td>wigwam.blubb.com</td><td>192.168.0.101</td></tr>
</table></body></html>

Code: Alles auswählen

-v sorthost=1 : Falls gesetzt , sortiert nach hosts. Falls nich gesetzt, sortiert nach ip-addressen
-v ipPrefix="192.168" : prefix um an die ip-addressen vorne-anzustellen
-v hostSuffix="blubb.com": domain suffix
hier gibts den code : http://nopaste.debianforum.de/3969
hier gibts die Beispieldatei: http://nopaste.debianforum.de/3970

hoffe das hilft :)

Antworten