Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1987 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python : PING fait planter ma console

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python : PING fait planter ma console

n°2519669
erwan83
Du Shift DEL tu te méfieras !
Posté le 09-03-2026 à 18:14:56  profilanswer
 

Bonjour
 
J'utilise une fonction de ping dans mon code mais quand je lance le prog en mode console, à chaque fois qu'il fait un ping, il me semble que ça fout en l'air ma console (deux consoles en même temps, je sais pas trop...)
En mode debug Idle.exe ça ouvre une console pour chaque ping
Avec Visual Studio, encore en debug, je ne vois aucune console
 
Donc :  
Y a-t-il un moyen d'utiliser ce ping en python (os.system.ping ......) sans ouvrir à chaque fois une P#TAIN de fenètre ?
 
Merci


---------------
https://www.oise-net-multiservices.com
mood
Publicité
Posté le 09-03-2026 à 18:14:56  profilanswer
 

n°2519764
boutlatent
Posté le 10-03-2026 à 19:36:17  profilanswer
 

Salut,
 
Faut en dire plus !
 
Moi si j'écris dans un fichier :
 

Code :
  1. import subprocess
  2. results = subprocess.check_output(('ping', 'hardware.fr', '-c', '1'))
  3. print(results.decode())


 
Et que je le lance avec python via mon terminal Linux, y a pas de fenêtre qui s'ouvre :o
 
Sur quel OS ?
Dans un GUI ?


Message édité par boutlatent le 10-03-2026 à 19:37:28

---------------
La connerie est la décontraction de l'intelligence.
n°2519768
erwan83
Du Shift DEL tu te méfieras !
Posté le 10-03-2026 à 20:41:36  profilanswer
 

Effectivement.
 
Non c'est en brut, pas de GUI et sous Windows (je sais gnagnagna)
 
 

Code :
  1. import os
  2. ...///...
  3.             try:
  4.                 response = os.system("ping -n 1 -w 1000 " + adresseping)
  5.             except:
  6.                 z=0   ## j'aurais pû développer mais bon...
  7.             else:
  8.                 if response == 0:
  9.                     pingstatus = "Network Active"
  10.                 else:
  11.                     pingstatus = "Network Offline"


Message édité par erwan83 le 10-03-2026 à 20:44:14

---------------
https://www.oise-net-multiservices.com
n°2519773
erwan83
Du Shift DEL tu te méfieras !
Posté le 10-03-2026 à 21:35:33  profilanswer
 

Donc j'ai essayé ton code mais sous Win il plante
 
J'ai modifié ainsi :
 

Code :
  1. response=subprocess.check_call("ping -n 1 -w 1000 " + adresseping)


 
Et là c'est bon.
 
Merci du coup de main !


---------------
https://www.oise-net-multiservices.com
n°2520287
xilebo
noone
Posté le 16-03-2026 à 21:33:16  profilanswer
 

Bonjour,
 
Dommage d'utiliser python et de faire des appels "system" ( CreateProcess ) derrière.
 
Y a 36 façons de faire ça plus propre.
 
Soit t'utilises une bibliothèque python qui te gère déjà le ping, et c'est sûr qu'il y en a au moins une
 - pip install ping3  

Code :
  1. from ping3 import ping, verbose_ping
  2. delay = ping("127.0.0.1" )
  3. verbose_ping("hardware.fr" , count = 4)


 - pip install pythonping

Code :
  1. from pythonping import ping
  2. ping('8.8.8.8', count=4, timeout=2)


 
Ou plus roots, ping c'est le protocole ICMP, code commande n°8, tu fais des raw_socket et tu reconstruis le paquet icmp.

Code :
  1. import socket
  2. import struct
  3. import time
  4. import os
  5. ICMP_ECHO_REQUEST = 8
  6. def checksum(data):   
  7.     if len(data) % 2:
  8.         data += b'\x00'
  9.     s = sum(struct.unpack("!%dH" % (len(data)//2), data))
  10.     s = (s >> 16) + (s & 0xffff)
  11.     s += s >> 16
  12.     return ~s & 0xffff
  13. def create_packet(id):   
  14.     header = struct.pack('!BBHHH', ICMP_ECHO_REQUEST, 0, 0, id, 1)
  15.     payload = b'HFRISTHEBEST'
  16.     chksum = checksum(header + payload)
  17.     header = struct.pack('!BBHHH', ICMP_ECHO_REQUEST, 0, chksum, id, 1)
  18.     return header + payload
  19. def ping(dest_addr, timeout=1):
  20.     try:
  21.         sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
  22.     except PermissionError:
  23.         print("error" )
  24.         return
  25.     sock.settimeout(timeout)
  26.     packet_id = os.getpid() & 0xFFFF
  27.     packet = create_packet(packet_id)
  28.     sock.sendto(packet, (dest_addr, 1))
  29.    
  30.     start_time = time.time()
  31.     try:
  32.         recv_packet, addr = sock.recvfrom(1024)
  33.         elapsed = (time.time() - start_time) * 1000
  34.         print(f"Réponse de {addr[0]} en {elapsed:.2f} ms" )
  35.     except socket.timeout:
  36.         print("Timeout" )
  37.     finally:
  38.         sock.close()
  39. ping("forum.hardware.fr" )


Message édité par xilebo le 16-03-2026 à 21:36:09

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python : PING fait planter ma console

 

Sujets relatifs
Python et import/include dans un script[RESOLU] Variables "globales" en Python ??
PB avec pyttsx3 sur Python 3.13[Python] : Projet perso – dumps F1 à jour dans le schéma Ergast
Python PostGrsql PB requetepython additionner 2 nombres positive sans utiliser operateur
exercice Algo NSI en python : consigne pas claire.Première app graphique en python - tkinter
Echec d'importation d'un module PythonSimulation physique python
Plus de sujets relatifs à : Python : PING fait planter ma console


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)