En fonction de ce que vous voulez réaliser, le plus simple est probablement d'appeler la commande ping du système
L'utilisation du module de sous-processus est la meilleure façon de procéder, même si vous devez vous rappeler que la commande ping est différente sur les différents systèmes d'exploitation !
import subprocess
host = "www.google.com"
ping = subprocess.Popen(
["ping", "-c", "4", host],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
Vous n'avez pas à vous soucier des caractères d'échappement de l'interpréteur de commandes. Par exemple
host = "google.com; `echo test`
no exécuter la commande echo.
Maintenant, pour obtenir les résultats du ping, vous pouvez analyser les données suivantes out
variable. Exemple de sortie :
round-trip min/avg/max/stddev = 248.139/249.474/250.530/0.896 ms
Exemple de regex :
import re
matcher = re.compile("round-trip min/avg/max/stddev = (\d+.\d+)/(\d+.\d+)/(\d+.\d+)/(\d+.\d+)")
print matcher.search(out).groups()
# ('248.139', '249.474', '250.530', '0.896')
Encore une fois, n'oubliez pas que le résultat variera en fonction du système d'exploitation (et même de la version de l'outil de gestion de l'information). ping
). Ce n'est pas idéal, mais cela fonctionnera bien dans de nombreuses situations (où vous connaissez les machines sur lesquelles le script sera exécuté).
3 votes
Veuillez définir le terme "ping". Voulez-vous dire utiliser le protocole ICMP ping, ou voir si un serveur web fonctionne ? Ou quelque chose d'autre ?
0 votes
Cela s'est avéré plus utile pour un problème que je résolvais : stackoverflow.com/questions/3764291/checking-network-connection
1 votes
Voici l'implémentation de python pur : falatic.com/index.php/39/pinging-with-python