Hallo allerseits
In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können. Aber anscheinend bin ich zu doof dazu.
Wenn es wirklich machbar ist, wäre ich extrem dankbar für ein Codebeispiel.
Und damit es keine Missverständnisse gibt. Ich möchte in Python das machen was in der Windows Eingabeaufforderung so aussieht:
nslookup <aufzulösende IP Adresse> <verwendeter DNS Server>
Bedanke mich schon im Voraus für Eure Lösungsvorschläge.
Reverse DNS Abfrage mit vorgegebenem DNS Server
Hallo ebenfalls.KusiE hat geschrieben: ↑Donnerstag 12. August 2021, 13:32 Hallo allerseits
In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können.
Ich habe erst mal 3 Fragen:
1. Was bedeutet "Umfeld" konkret?
2. Wie sieht dein bisheriges Skript aus?
3. Wozu brauchst du für nslookup ein Skript? - Btw. - meiner Unkenntnis geschuldet: das letzte Mal, dass ich ein nslookup gemacht hatte, liegt mindestens 20 Jahre zurück. Klar, ich betreibe auch keine Nameserver.
Hallo,
müsste irgendwie so gehen:
müsste irgendwie so gehen:
Code: Alles auswählen
import dns
from dns import resolver, reversename
# eigenen nameserver setzen
my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['8.8.8.8']
revName = dns.reversename.from_address("172.217.22.227")
hostName = my_resolver.query(revName, "PTR")[0]
print(revName.to_text())
# 227.22.217.172.in-addr.arpa.
print(hostName)
# muc11s02-in-f3.1e100.net.
Viele Grüße
HS
HS
Merci für Dein Feedback. Ich hoffe mit den Zeilen unten kann ich Deine Fragen beantworten.AlexL hat geschrieben: ↑Donnerstag 12. August 2021, 16:59Hallo ebenfalls.KusiE hat geschrieben: ↑Donnerstag 12. August 2021, 13:32 Hallo allerseits
In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können.
Ich habe erst mal 3 Fragen:
1. Was bedeutet "Umfeld" konkret?
2. Wie sieht dein bisheriges Skript aus?
3. Wozu brauchst du für nslookup ein Skript? - Btw. - meiner Unkenntnis geschuldet: das letzte Mal, dass ich ein nslookup gemacht hatte, liegt mindestens 20 Jahre zurück. Klar, ich betreibe auch keine Nameserver.
1. Umfeld
Firmennetzwerk (Zentrale/Aussenstandorte) mit einigen hundert VLANs. Diverse VLAN's werden seit einiger Zeit nicht mehr von unserem DNS, sondern vom DNS des übergeordneten Konzern verwaltet. Dies führt zu meinem Problem.
2. Skript (auf das Minimum reduziert, als Beispiel was ich machen will)
Beispiel 1:
Code: Alles auswählen
import socket
in_file = open("ips.csv","r")
out_file = open("ergenis.csv","w")
for ip in in_file:
hostname = socket.getfqdn(ip.rstrip())
out_file.write(ip.rstrip()+";"+hostname+"\n")
in_file.close()
out_file.close()
Code: Alles auswählen
import socket
in_file = open("hostnames.csv","r")
out_file = open("ergebis.csv","w")
for hostname in in_file:
ip = socket.gethostbyname(hostname.rstrip())
out_file.write(ip+";"+hostname+"\n")
in_file.close()
out_file.close()
3. nslookup
Damit wollte ich nur verdeutlichen, was das Script rein von der Funktion her machen soll.
Super, besten Dank. Hab es mit Deinem Beispielcode hinbekommen!frogi001 hat geschrieben: ↑Donnerstag 12. August 2021, 20:05 Hallo,
müsste irgendwie so gehen:
Code: Alles auswählen
import dns from dns import resolver, reversename # eigenen nameserver setzen my_resolver = dns.resolver.Resolver() my_resolver.nameservers = ['8.8.8.8'] revName = dns.reversename.from_address("172.217.22.227") hostName = my_resolver.query(revName, "PTR")[0] print(revName.to_text()) # 227.22.217.172.in-addr.arpa. print(hostName) # muc11s02-in-f3.1e100.net.