102 lines
4.1 KiB
Python
102 lines
4.1 KiB
Python
from utils.utils import _print_status, send_to_client
|
||
from utils.reboot import reboot
|
||
from utils.manager import add_to_group, remove_group, remove_esp_from_group
|
||
import time
|
||
|
||
|
||
def system_check(c2):
|
||
_print_status("=============== TEST GLOBAL DU SYSTÈME ===============", "CYAN")
|
||
|
||
# 1. Liste des clients connectés
|
||
_print_status("[1/10] Liste des clients connectés", "YELLOW")
|
||
if not c2.clients:
|
||
_print_status("Aucun client connecté", "RED", "✗")
|
||
return
|
||
for i, (addr, _) in enumerate(c2.clients.items(), 1):
|
||
print(f" {i}. {addr[0]}:{addr[1]}")
|
||
_print_status("Liste récupérée", "GREEN", "✓")
|
||
|
||
# 2. Envoi d'une commande simple ("ls") à chaque client
|
||
_print_status("[2/10] Test d'envoi de commande à chaque client", "YELLOW")
|
||
for addr in list(c2.clients.keys()):
|
||
try:
|
||
response = send_to_client(c2, addr, "ls", wait_response=True)
|
||
if response:
|
||
_print_status(f"Réponse reçue de {addr[0]}", "GREEN", "✓")
|
||
else:
|
||
_print_status(f"Aucune réponse de {addr[0]}", "RED", "✗")
|
||
except:
|
||
_print_status(f"Erreur d'envoi vers {addr[0]}", "RED", "✗")
|
||
|
||
# 3. Création et remplissage d'un groupe de test
|
||
_print_status("[3/10] Création d’un groupe test et ajout de clients", "YELLOW")
|
||
test_group = "test_all"
|
||
for i, addr in enumerate(c2.clients.keys()):
|
||
if i < 2: # Limite à 2 clients pour le test
|
||
add_to_group(c2, test_group, addr)
|
||
if test_group in c2.groups:
|
||
_print_status(f"Groupe '{test_group}' créé avec {len(c2.groups[test_group])} clients", "GREEN", "✓")
|
||
else:
|
||
_print_status("Échec création groupe", "RED", "✗")
|
||
|
||
# 4. Liste des groupes
|
||
_print_status("[4/10] Listing des groupes", "YELLOW")
|
||
if c2.groups:
|
||
for group, members in c2.groups.items():
|
||
print(f" {group} : {members}")
|
||
_print_status("Groupes listés", "GREEN", "✓")
|
||
else:
|
||
_print_status("Aucun groupe trouvé", "RED", "✗")
|
||
|
||
# 5. Reboot d’un seul client
|
||
_print_status("[5/10] Reboot d’un seul client", "YELLOW")
|
||
first_client = list(c2.clients.keys())[0]
|
||
reboot(c2, first_client, mode="single")
|
||
time.sleep(5)
|
||
|
||
# 6. Reboot du groupe
|
||
_print_status("[6/10] Reboot du groupe", "YELLOW")
|
||
reboot(c2, test_group, mode="group")
|
||
time.sleep(5)
|
||
|
||
# 7. Reboot de tous les clients
|
||
_print_status("[7/10] Reboot de tous les clients", "YELLOW")
|
||
reboot(c2, mode="all")
|
||
time.sleep(5)
|
||
|
||
# 8. Attente et vérification de reconnexion
|
||
_print_status("[8/10] Attente de reconnexion des clients", "YELLOW", "!")
|
||
time.sleep(5)
|
||
if c2.clients:
|
||
for addr in c2.clients.keys():
|
||
print(f" - {addr[0]}:{addr[1]}")
|
||
_print_status("Clients reconnectés", "GREEN", "✓")
|
||
else:
|
||
_print_status("Aucun client reconnecté", "RED", "✗")
|
||
|
||
# 9. Retirer un client du groupe
|
||
# check si il y a plusieurs clients dans le groupe
|
||
# si oui, retirer le premier
|
||
# sinon passer le test
|
||
_print_status("[9/10] Retirer un client du groupe", "YELLOW")
|
||
if len(c2.groups[test_group]) > 1:
|
||
first_client = c2.groups[test_group][0]
|
||
remove_esp_from_group(c2, test_group, [first_client])
|
||
if first_client not in c2.groups[test_group]:
|
||
_print_status(f"Client {first_client} retiré du groupe {test_group}", "GREEN", "✓")
|
||
else:
|
||
_print_status(f"Échec de retrait du client {first_client} du groupe {test_group}", "RED", "✗")
|
||
else:
|
||
_print_status("Groupe ne contient qu'un seul client, pas de retrait effectué", "YELLOW", "!")
|
||
|
||
# 10. Suppression du groupe
|
||
_print_status("[10/10] Suppression du groupe de test", "YELLOW")
|
||
if test_group in c2.groups:
|
||
remove_group(c2, test_group)
|
||
if test_group not in c2.groups:
|
||
_print_status("Groupe supprimé", "GREEN", "✓")
|
||
else:
|
||
_print_status("Échec de suppression du groupe", "RED", "✗")
|
||
|
||
_print_status("=============== TEST TERMINÉ ===============", "CYAN")
|