Seite 1 von 1

Liste IP und entsprechende Hostnamen

Verfasst: Samstag 10. März 2018, 18:57
von newbie2018
Hallo zusammen!
Bin neu in diesem Forum und eigentlich in Bezug auf python noch ein ziemlicher Anfänger ... habe mir eine nette Aufgabe gesucht und jetzt habe ich mir schon ein wenig die Zähne ausgebissen, aber ihr könnt mir sicher helfen.

Also ich habe ein file mit folgendem Inhalt:

qp000513;10.164.58.252
qp000514;10.18.18.12
qp000905;172.24.1.114
qp000821;10.153.10.221

jetzt möchte ich mittels python script die Liste nach der zweiten Spalte sortieren und jede Zeile soll am Ende in einem File so aussehen:

qp000514 IN A 10.18.18.12
qp000821 IN A 10.153.10.221
qp000513 IN A 10.164.58.252
qp000905 IN A 172.24.1.114

Also die Liste soll die Einträge sortieren und anstatt des Semikolon soll dann "IN A" stehen.

Code: Alles auswählen

import csv
import operator

input_file = open('file.txt','r')

csv1 = csv.reader(input_file,delimiter=';')

sort = sorted(csv1,key=operator.itemgetter(1))

for eachline in sort:
   print (eachline)
Leider geht das schon mit dem sortieren nicht wirklich, daher habe ich bei der String-Manipulation noch nicht weitergemacht.

Ihr werdet sicher schon erahnen, was ich mit dem Script machen möchte, ich möchte mein Zone-file mit einem txt file erstellen, sortieren nach der ersten Spalte kann ich schon, aber das will ich nicht :D

Vielleicht könnt Ihr mir ja weiterhelfen - auf alle Fälle mal DANKE und ich werde noch ein wenig im Netz weitersuchen, vielleicht finde ich ja was passendes ...

Newbie2018

Re: Liste IP und entsprechende Hostnamen

Verfasst: Samstag 10. März 2018, 19:06
von Sirius3
@newbie2018: das lexikalische Vergleichen von IP-Adressen funktioniert auch nicht. Das Modul ipaddress hilft beim Konvertieren in ein sortierbares Objekt.

Re: Liste IP und entsprechende Hostnamen

Verfasst: Samstag 10. März 2018, 20:30
von newbie2018
Danke für die Antwort - den Tipp!! Jetzt habe ich mal ein wenig rumgespielt und bin schon ein wenig weitergekommen.

Code: Alles auswählen

import ipaddress

with open('file.txt', 'r') as f:
   ips = sorted(ipaddress.ip_address(line.strip()) for line in f)
   print('\n'.join(map(str, ips)))
Aber nur eine liste mit IP ich habe aber eine Kombi aus IP und Hostname, wie kann ich das machen?

Newbie2018

Re: Liste IP und entsprechende Hostnamen

Verfasst: Samstag 10. März 2018, 20:34
von Sirius3
@newbie2018: Du mußt nur Deine beiden Lösungen kombinieren.