Intern
1. Écrire un objet Python "switches" au format YAML 2. Transformer "switches" pour ne conserver que les commutateurs "cisco" 3. Dans la commande standardise_macaddr, obtenir la dernière adresse de l'hôte dans le réseau "172.16.0.0/28" 4. Analyser "dhcp_snooping_table" en une liste de dictionnaires au format : ```python dhcp_snooping_table_parsed = [ { "mac": "00:E9:BC:3F:A6:50", "ip": "100.1.1.6", "interface": "FastEthernet0/20", }, { "mac": "00:E9:22:11:A6:50", "ip": "100.1.1.7", "interface": "FastEthernet0/21", } ] ``` 5. Écrire une classe "NetworkSubnet" avec 2 méthodes : - get_subnet - retourne la première sous-réseau disponible de la longueur spécifiée en tant qu'objet de la classe IPv4Network - show_network_pool - retourne une liste des sous-réseaux disponibles
sobes.tech IA
Réponse de l'IA
yaml commutateurs: cisco1: fournisseur: cisco modèle: 2960 ip: 10.0.0.1 cisco2: fournisseur: cisco modèle: 3750 ip: 10.0.0.2 hp1: fournisseur: hp modèle: 1920 ip: 10.0.0.3
---
# Filtrage uniquement des commutateurs cisco
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
commutateurs_cisco = {k: v for k, v in switches['switches'].items() if v['fournisseur'] == 'cisco'}
Obtenir la dernière adresse de l'hôte dans le réseau 172.16.0.0/28
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
dernière_hôte = str(list(network.hosts())[-1])
print(dernière_hôte) # 172.16.0.14
Analyse du tableau dhcp_snooping en une liste de dictionnaires
dhcp_snooping_table = '''
00:E9:BC:3F:A6:50 100.1.1.6 FastEthernet0/20
00:E9:22:11:A6:50 100.1.1.7 FastEthernet0/21
'''
lignes = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
pour ligne dans lignes:
mac, ip, interface = ligne.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
Classe NetworkSubnet
import ipaddress
class NetworkSubnet:
def __init__(self, réseau):
self.réseau = ipaddress.IPv4Network(réseau)
self.sous_réseaux_utilisés = []
def get_subnet(self, préfixe):
for sous_réseau in self.réseau.subnets(new_prefix=préfixe):
if sous_réseau not in self.sous_réseaux_utilisés:
self.sous_réseaux_utilisés.append(sous_réseau)
return sous_réseau
return None
def show_network_pool(self):
toutes_les_sous_réseaux = list(self.réseau.subnets())
disponibles = [s for s in toutes_les_sous_réseaux if s not in self.sous_réseaux_utilisés]
return disponibles
# Exemple d'utilisation
net = NetworkSubnet('192.168.0.0/24')
sous_réseau = net.get_subnet(28)
print(sous_réseau) # 192.168.0.0/28
print(net.show_network_pool())