Skip to main content

New Page

"""
Praktijkleren Examenopdracht – Python
Onderwerp: Subnetcalculator
Auteur: <jouw naam>
Datum: <datum>


Dit script automatiseert het berekenen van netwerkgegevens
op basis van een IP-adres en subnetmasker.
"""


def vraag_ip_adres():
    """
    Vraagt maximaal 3 keer om een geldig IPv4-adres.
    """
    pogingen = 0


    while pogingen < 3:
        ip = input("Voer een IP-adres in (bijv. 192.168.1.10): ")
        delen = ip.split(".")


        if len(delen) == 4 and all(d.isdigit() and 0 <= int(d) <= 255 for d in delen):
            return ip
        else:
            pogingen += 1
            print(f"Ongeldig IP-adres. Poging {pogingen} van 3.")


    print("Te veel foutieve pogingen.")
    return None



def vraag_subnetmasker():
    """
    Vraagt een subnetmasker in CIDR-notatie.
    """
    masker = input("Voer subnetmasker in (CIDR, bijv. 24): ")


    if masker.isdigit() and 0 <= int(masker) <= 32:
        return int(masker)
    else:
        print("Ongeldig subnetmasker.")
        return None



def bereken_hosts(cidr):
    """
    Berekent het aantal hosts op basis van CIDR.
    """
    host_bits = 32 - cidr
    hosts = (2 ** host_bits) - 2
    return hosts



def main():
    """
    Hoofdprogramma
    """
    ip = vraag_ip_adres()
    if ip is None:
        return


    cidr = vraag_subnetmasker()
    if cidr is None:
        return


    hosts = bereken_hosts(cidr)


    print("\nResultaat:")
    print("IP-adres:", ip)
    print("Subnetmasker: /" + str(cidr))
    print("Aantal mogelijke hosts:", hosts)



main()