ich habe heute aus Übungszwecken versucht, mir ein Programm zu schreiben, dass mir aus einem gegebenen Adressbereich, Hostname und IP Adresse in eine Datei schreibt. Dabei habe ich auf das Modul Socket bzw. auf die Methode gethostbyaddr von socket zurückgegriffen.
Dabei ist mir nun aufgefallen, dass -wenn es keinen DNS Eintrag für Host X gibt- eine ziemliche "Verzögerung" auftritt bis zur nächsten IP gesprungen wird. Habe dann hier im Forum gefunden, dass das wohl ein normales Verhalten von gethostbyaddr ist. Gut.
Nun mal hier mein Werk:
Code: Alles auswählen
import socket
def file_open():
try:
datafile = open('c:/hosts.txt','w')
except IOError:
print 'Pfad, Dateimodus oder Dateiname ungültig!'
return datafile
def net_range():
net_part = raw_input('Netzwerk - (Bsp. 192.168.0.): ')
host_from = raw_input('Hosts von - (Bsp. 1): ')
host_to = raw_input('Hosts bis - (Bsp. 254): ')
return net_part, host_from, host_to
def file_close():
datafile.close()
print 'Beendet!'
def discover():
datafile = file_open()
netrange = net_range()
net_part = netrange[0]
host_from = netrange[1]
host_to = netrange[2]
for host in range(int(host_from), int(host_to)):
try:
host_to_check = str(net_part) + str(host)
host_check = socket.gethostbyaddr(host_to_check)
print 'DNS zu IP {} gefunden'.format(host_to_check)
print >> datafile, host_check
except socket.herror:
print 'Für {} kein DNS - Eintrag vorhanden!'.format(host_to_check)
print >> datafile, 'Für {} kein DNS - Eintrag vorhanden!'.format(host_to_check)
except socket.gaierror:
print 'Sie haben bei der Eingabe des Adressbereichs einen Fehler gemacht!'
break
datafile.close()
Code: Alles auswählen
def discover():
datafile = file_open()
netrange = net_range()
net_part = netrange[0]
host_from = netrange[1]
host_to = netrange[2]
Deshalb nochmals die Frage, ob das so ok ist?
Btw. mir ist bewusst, dass die For Schleife -wenn ich zb von 1 bis 10 eingebe, von 0 - 9 "zählt", allerdings habe ich für dieses "Problem" noch keine Lösung. (Den Wert der Variable host_to mittels +1 zu erhöhen, ist wohl eher nicht so schön...)
LG und Danke!
Daniel