#!/usr/bin/env python3 """Test manuel de la console série Nova (étape 6 du déploiement). Usage : python3 test-console-serie.py """ import sys import time import websocket url = sys.argv[1] commande = sys.argv[2] if len(sys.argv) > 2 else "echo bonjour-syllabus" ws = websocket.create_connection(url, subprotocols=["binary"], timeout=10) def lire(duree=3): fin = time.time() + duree sortie = b"" while time.time() < fin: ws.settimeout(max(0.2, fin - time.time())) try: morceau = ws.recv() except websocket.WebSocketTimeoutException: break except websocket.WebSocketConnectionClosedException: print("[connexion fermée par le serveur]") break if isinstance(morceau, str): morceau = morceau.encode() if not morceau: break sortie += morceau return sortie print("=== lecture initiale (vide la file, y compris un essai précédent) ===") sys.stdout.buffer.write(lire(5)) sys.stdout.flush() print("\n=== connexion : eleve ===") ws.send_binary(b"eleve\r") sys.stdout.buffer.write(lire(2)) sys.stdout.flush() print("\n=== mot de passe ===") ws.send_binary(b"eleve\r") sys.stdout.buffer.write(lire(2)) sys.stdout.flush() print(f"\n=== envoi de la commande : {commande} ===") ws.send_binary((commande + "\r").encode()) sys.stdout.buffer.write(lire(3)) sys.stdout.flush() ws.close() print("\n=== fin ===")