Vérifier si la commande ping a réussi à l'aide de sous-processus en python
- Je exécuter la commande ping en python par l'ouverture d'une fenêtre de commande avec la commande ping à l'aide de python sous-processus module.
Par exemple:
import subprocess
p = subprocess.Popen('ping 127.0.0.1')
Ensuite, j'ai vérifier si la sortie contient "Répondre de " propriété intellectuelle":", pour voir si la requête ping a été un succès.
Cela fonctionne dans tous les cas où le cmd est en anglais.
Que puis-je faire pour vérifier si une table de ping a été un succès sur toute langue cmd?
connexes: Ping sur un site en Python?
OriginalL'auteur yuval | 2016-03-02
Vous devez vous connecter pour publier un commentaire.
À l'aide de python sous Linux, je voudrais utiliser check_output()
cette retournera true si le ping est réussie
OriginalL'auteur elfosardo
Je sais que cela fonctionne sur Linux, je pense que cela fonctionnera aussi sur Windows.
Mise à jour: Le décommenté code fonctionne également sous Windows
Si p est.poll() est 0, le ping a été réussie, si elle est de 1 la destination est inaccessible.
Une version pour de nombreuses adresses IP seront:
Vous voulez faire la boucle en python ou en bash?
en bash, "cmd /C for /l %i in (1, 1, 254) ne ping -w 2000 -n 1 195.218.195.%j'"
OriginalL'auteur Hadrián
Pour windows :
OriginalL'auteur M.hosseny
@elfosardo votre solution ne permet pas de retourner true si le ping est un succès. Elle renvoie le résultat de la commande ou un CalledProcessError exception si le code de retour est non nulle.
À l'aide de check_output() comme vous l'avez suggéré, voici une solution possible, même si ce n'est le meilleur:
OriginalL'auteur Spartacus