Netzwerkscann via Ping
Verfasst: Donnerstag 31. Dezember 2015, 00:29
Hallo Community. Hier ein kleines Programm welches der Reihe nach IP Adressen anpingt und ihre erreichbarkeit in einer Datei festhält
Hier habe ich nun das hässliche Problem in Zeile 4 und 5 welches ich gerne umgehen würde. Leider kommt mir hierzu keinerlei Idee in den Kopf dar die Funktion einen Wert 0 oder 255 zurückgiebt wenn man ihn per print ausgiebt, type(NED) aber NoneType ausgiebt was für mich irgendwie keinen SInn ergibt.
2Tens funktioniert das ganze soweit ja ganz gut außer es kommt eine null in einer IP vor.
In Zeile 16 ersetze ich alle 0 in dem string durch "nichts". Nun ist es natürlich möglich das eine gewollte null in der IP wie z.B. 192.168.107.xxx vorkommt. Diese werden ja dann auch gestrichen und es hat nichts mehr mit dem ursprünglich gemeinten netzwerk zu tun.....
Wie könnte ich dieses Problem lösen?
Mir ist klar das einige Codezeilen in einer zusammen gefasst werden könnten. Aber dar ich zum Test immer wieder print ausgaben einfüge um best werte zu prüfen ist dies mommentan noch nicht sinnvoll.
mfg danny385
Code: Alles auswählen
#! /usr/bin/env python3
import os
def ping(ip):#Pingbefehl an System übergeben
NED = bool(os.system ("ping -c 1 -w 1 "+ ip))
return (NED)
def writetofile(data):#Datei öffnen oder wenn nicht vorhande erstellen
file = open ("pingtestlog.log" , "a")#und data in die Datei schreiben
file.write (str(data)+ "\n")
file.close()
return()
def testloop(ip,start,end):
ipanfang = ip[0:12]#ersten stellen einer IP adresse ermitteln
ipanfang = ipanfang.replace( "0", "" )#nullen wegstreichen
liste = [i for i in range (start , end+1)]
#print (liste)
for index in liste:
ip = ipanfang+str(index)#IP aus ipanfang und einem wert auf liste zusammensetzen
print (ip + " Wird getestet")
response = ping(ip)
if response != True:#Ergebniss auswerten
data = ip + " : reachable"
print (data)
writetofile(data)
else :
data = ip + " : not reachable"
print (data)
writetofile(data)
while(True):#Mainloop
start=int(1)
ip = str(input("Erste IP angeben (Es wird bis x.x.x.254 gescand) : "))
end = int(input("Bis zu welcher IP soll gescannt werden?: "))
testloop(ip,start,end)
2Tens funktioniert das ganze soweit ja ganz gut außer es kommt eine null in einer IP vor.
In Zeile 16 ersetze ich alle 0 in dem string durch "nichts". Nun ist es natürlich möglich das eine gewollte null in der IP wie z.B. 192.168.107.xxx vorkommt. Diese werden ja dann auch gestrichen und es hat nichts mehr mit dem ursprünglich gemeinten netzwerk zu tun.....
Wie könnte ich dieses Problem lösen?
Mir ist klar das einige Codezeilen in einer zusammen gefasst werden könnten. Aber dar ich zum Test immer wieder print ausgaben einfüge um best werte zu prüfen ist dies mommentan noch nicht sinnvoll.
mfg danny385