160 lines
4.6 KiB
Python
160 lines
4.6 KiB
Python
import json
|
|
from netmiko import ConnectHandler
|
|
|
|
def question_9(net_connect):
|
|
print(net_connect.__dict__)
|
|
print("Adresse IP :", net_connect.host)
|
|
print("Device type :", net_connect.device_type)
|
|
|
|
|
|
def question_10(net_connect):
|
|
output = net_connect.send_command("show ip interface brief")
|
|
print(output)
|
|
|
|
def question_11(net_connect):
|
|
output = net_connect.send_command("show ip interface brief", use_textfsm=True)
|
|
print(type(output))
|
|
|
|
def question_12(net_connect):
|
|
pass
|
|
|
|
def question_13(net_connect):
|
|
output = net_connect.send_command("show ip route", use_textfsm=True)
|
|
print(output)
|
|
print(type(output))
|
|
|
|
|
|
def question_14(net_connect):
|
|
interfaces_status = net_connect.send_command("show ip interface brief", use_textfsm=True)
|
|
print("État des interfaces du routeur R1 :")
|
|
#print(interfaces_status)
|
|
|
|
for iface in interfaces_status:
|
|
intf_name = iface['interface']
|
|
print(f"\nConfiguration de l'interface {intf_name} :")
|
|
config = net_connect.send_command(f"show run interface {intf_name}")
|
|
print(config)
|
|
|
|
|
|
|
|
def question_15(net_connect):
|
|
# Liste de commandes pour créer l'interface Loopback
|
|
loopback_cmds = [
|
|
"interface loopback1",
|
|
"ip address 192.168.1.1 255.255.255.255",
|
|
"description loopback interface from netmiko",
|
|
"no shutdown"
|
|
]
|
|
|
|
# Exécution des commandes en mode configuration
|
|
output = net_connect.send_config_set(loopback_cmds)
|
|
print("Résultat de la configuration :")
|
|
print(output)
|
|
|
|
# Sauvegarder la configuration
|
|
save_output = net_connect.save_config()
|
|
print("\nConfiguration sauvegardée :")
|
|
print(save_output)
|
|
|
|
def question_16(net_connect):
|
|
# Exécution en mode configuration
|
|
output = net_connect.send_config_set("no interface loopback1")
|
|
print("Résultat de la suppression de loopback1 :")
|
|
print(output)
|
|
|
|
# Sauvegarder la configuration
|
|
save_output = net_connect.save_config()
|
|
print("\nConfiguration sauvegardée après suppression :")
|
|
print(save_output)
|
|
|
|
|
|
def question_17(net_connect):
|
|
# Lire les commandes depuis le fichier
|
|
with open("config/loopback_R01.conf", "r") as f:
|
|
commands = [line.strip() for line in f if line.strip()] # ignore les lignes vides
|
|
|
|
# Exécuter les commandes en mode configuration
|
|
output = net_connect.send_config_set(commands)
|
|
print("Résultat de l'exécution des commandes :")
|
|
print(output)
|
|
|
|
# Sauvegarder la configuration
|
|
save_output = net_connect.save_config()
|
|
print("\nConfiguration sauvegardée :")
|
|
print(save_output)
|
|
|
|
def question_18(net_connect):
|
|
for i in range(1, 5):
|
|
loopback_name = f"loopback{i}"
|
|
commands = [f"no interface {loopback_name}"]
|
|
print(f"\nSuppression de l'interface {loopback_name} :")
|
|
output = net_connect.send_config_set(commands)
|
|
print(output)
|
|
# Sauvegarder la configuration
|
|
save_output = net_connect.save_config()
|
|
print("\nConfiguration sauvegardée :")
|
|
print(save_output)
|
|
|
|
def get_inventory():
|
|
"""
|
|
Lit le fichier inventory/hosts.json et retourne son contenu.
|
|
"""
|
|
inventory_file = "inventory/hosts.json"
|
|
try:
|
|
with open(inventory_file, "r") as f:
|
|
data = json.load(f)
|
|
return data
|
|
except FileNotFoundError:
|
|
print(f"Erreur : le fichier {inventory_file} n'existe pas.")
|
|
return []
|
|
|
|
|
|
def question_20():
|
|
pass
|
|
|
|
|
|
def question_21():
|
|
inventory = get_inventory()
|
|
|
|
for device in inventory:
|
|
print(f"\n=== Connexion au routeur {device['hostname']} ({device['ip']}) ===")
|
|
|
|
try:
|
|
# Connexion au routeur
|
|
net_connect = ConnectHandler(
|
|
device_type=device["device_type"],
|
|
host=device["ip"],
|
|
username=device["username"],
|
|
password=device["password"]
|
|
)
|
|
|
|
# Commande à exécuter
|
|
command = "show run interface GigabitEthernet0/0.99"
|
|
output = net_connect.send_command(command)
|
|
|
|
print(f"\nConfiguration de GigabitEthernet0/0.99 sur {device['hostname']} :\n")
|
|
print(output)
|
|
|
|
net_connect.disconnect()
|
|
|
|
except Exception as e:
|
|
print(f"❌ Erreur sur {device['hostname']} : {e}")
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
#question_9(net_connect)
|
|
#question_10(net_connect)
|
|
#question_11(net_connect)
|
|
#question_12(net_connect)
|
|
#question_13(net_connect)
|
|
#question_14(net_connect)
|
|
#question_15(net_connect)
|
|
#question_16(net_connect)
|
|
#question_17(net_connect)
|
|
#question_18(net_connect)
|
|
hosts = get_inventory()
|
|
print(hosts)
|
|
#question_20()
|
|
#question_21()
|
|
net_connect.disconnect() |