En Python, existe-t-il un moyen d'envoyer un ping à un serveur via ICMP et de renvoyer TRUE si le serveur répond, ou FALSE s'il ne répond pas ?
Si vous n’avez pas besoin de prendre en charge Windows, voici une façon très concise de le faire :
import os
hostname = "google.com" #example
response = os.system("ping -c 1 " + hostname)
#and then check the response...
if response == 0:
print hostname, 'is up!'
else:
print hostname, 'is down!'
Cela fonctionne parce que ping renvoie une valeur non nulle si la connexion échoue. (La valeur de retour varie en fonction de l'erreur réseau). Vous pouvez également modifier le délai d'attente de ping (en secondes) en utilisant l'option '-t' ;. Notez que cette option affiche du texte sur la console.
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import time
6
7 os.system("clear")
8 home_network = "172.16.23."
9 mine = []
10
11 for i in range(1, 256):
12 z = home_network + str(i)
13 result = os.system("ping -c 1 "+ str(z))
14 os.system("clear")
15 if result == 0:
16 mine.append(z)
17
18 for j in mine:
19 print "host ", j ," is up"
Un simple que je viens de concocter en une minute. L'utilisation d'icmplib nécessite les privilèges de l'utilisateur root, mais ce qui suit fonctionne très bien ! HTH