Implementieren Sie folgendes Programm:
Eingabe: IP Adresse
Verarbeitung: Magic
Ausgabe: 3 Broadcastadresse für die Subnetzmasken 255.255.255.0, 255.255.0.0, 255.0.0.0
# eingabe IP
#ip = input("IP-Adresse: ")
ip = "192.168.0.1"
# Zerlegen in Oktette am Punkt
bestandteile = ip.split(".")
# Zusammensetzen für die 3 Subnetzmasken
# 255.255.255.0
a_basis = bestandteile[0] + "." + bestandteile[1] + "." + bestandteile[2] + "."
a = a_basis + "255"
print("Broadcast:", a)
for number in range(1,255):
print("Hostnames:", a_basis + str(number))
# 255.255.0.0
b = bestandteile[0] + "." + bestandteile[1] + "." + "255" + "." + "255"
print("Broadcast:", b)
# 255.0.0.0
c = bestandteile[0] + "." + "255" + "." + "255" + "." + "255"
print("Broadcast:", c)
Erweitern Sie das Programm aus Aufgabe 2 für die Ausgabe der 2 verbleibenden Subnetzmasken
Hilfsmittel: https://docs.python.org/3/
Implementieren Sie Netzwerkprogramme in Python. Arbeiten Sie alle Unterkapitel folgendes Links durch
https://inf-schule.de/rechnernetze/anwendung
Hilfestellung für die Klasse Socket: https://docs.python.org/3/library/socket.html#socket.socket
Aufgabe aus der LK: netzwerke_aufgabe.docx
import platform
def is_reachable(ip):
"""
Sende Ping an IP.
True wenn IP erreichbar, sonst False
"""
param = "-n" if platform.system().lower() == "windows" else "-c"
command = ["ping", param, "1", str(ip)]
try:
result = subprocess.run(
command,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
return result.returncode == 0
except Exception:
return False
def scanning(ip, mask):
"""
Funktion welche alle Hostadressen eines Netzwerks zu einer gegebenen Netzwerkmaske angibt.
Auserdem Angabe ob die IP-Adresse durch einen Ping zu erreichen ist.
Die Kommentierten if-Abfragen funktionieren nur bei echten IP-Adressen.
"""
ip_ad = ip.split(".") #Teilt IP-Adresse auf
if int(mask) == 1:
"""
Wenn der Input der Netzmaske 1 ist,
wird die Netzmaske 255.255.255.0 auf die IP-Adresse angewendet
"""
basis_1 = ip_ad[0] + "." + ip_ad[1] + "." + ip_ad[2] + "."
for number in range(1,255):
"""
Generierung aller gültigen IP-Adressen unter der Subnetzmaske und Prüfung der Erreichbarkeit durch die Funktion "is_reachable"
"""
ausgabe_1 = basis_1 + str(number)
print(f"Hostadresse: {ausgabe_1}, Erreichbar: {is_reachable(ausgabe_1)}") #f-String Funktion erlaubt es die Ausgabe zu formatieren
"""
if is_reachable(ausgabe_1): #Abfrage ob die Hostadresse erreichbar ist
print(f"Hostadresse: {ausgabe_1}, Erreichbar: {is_reachable(ausgabe_1)}")
"""
elif int(mask) == 2:
basis_2 = ip_ad[0] + "." + ip_ad[1] + "."
"""
Doppelverkettete for-Schleife zur Generierung aller Hostadressen
"""
for oktett_2 in range(1, 255):
for oktett_3 in range(1,255):
ausgabe_2 = basis_2 + str(oktett_2) + "." + str(oktett_3)
print(f"Hostadresse: {ausgabe_2}, Erreichbar: {is_reachable(ausgabe_2)}")
"""
if is_reachable(ausgabe_2): #Abfrage ob die Hostadresse erreichbar ist
print(f"Hostadresse: {ausgabe_2}, Erreichbar: {is_reachable(ausgabe_2)}")
"""
elif int(mask) == 3:
basis_3 = ip_ad[0] + "."
"""
Dreifachverkettete for-Schleife zur Generierung aller Hostadressen
"""
for oktett_1 in range(1, 255):
for oktett_2 in range(1, 255):
for oktett_3 in range(1, 255):
ausgabe_3 = basis_3 + str(oktett_1) + "." + str(oktett_2) + "." + str(oktett_3)
print(f"Hostadresse: {ausgabe_3}, Erreichbar: {is_reachable(ausgabe_3)}")
"""
if is_reachable(ausgabe_3): #Abfrage ob die Hostadresse erreichbar ist
print(f"Hostadresse: {ausgabe_3}, Erreichbar: {is_reachable(ausgabe_3)}")
"""
if __name__ == "__main__":
"""
1. Eingabe der IP-Adresse und Subnetzmaske
2. Trennen der Eingabe (je nachdem, wie der Input programmiert ist, kann dieser Schritt entfallen)
3. Prüfen der Gültigkeit der Angegebenen Netzmaske und Ausgabe der Ergebnisse
"""
eingabe_alles = input("Geben sie eine IP-Adresse (z.B. 192.168.0.1) und eine Angabe für die Subnetzmaske (getrennt mit |) an (1 (für 255.255.255.0), 2 (für 255.255.0.0) und 3 (für 255.0.0.0)):" )
eingabe = eingabe_alles.split("|")
ip_adresse = eingabe[0]
netzmaske = eingabe[1]
if int(netzmaske) > 3:
print("Ungültige Eingabe, bitte versuchen Sie es erneut.")
else:
print("Start Scanning")
print(scanning(ip_adresse, netzmaske))