Liste IP und entsprechende Hostnamen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
newbie2018
User
Beiträge: 4
Registriert: Samstag 10. März 2018, 18:31

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
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@newbie2018: das lexikalische Vergleichen von IP-Adressen funktioniert auch nicht. Das Modul ipaddress hilft beim Konvertieren in ein sortierbares Objekt.
newbie2018
User
Beiträge: 4
Registriert: Samstag 10. März 2018, 18:31

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
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@newbie2018: Du mußt nur Deine beiden Lösungen kombinieren.
Antworten