Je ne suis pas un utilisateur de Python, mais on peut trouver beaucoup de matériel sur ce problème.
Par exemple, le poste Ping sur le réseau local en Python contient deux solutions que je reproduis ici (non testées).
Solution 1 : Analyse de la sortie de la commande ping
import subprocess
hostname = "10.20.16.30"
output = subprocess.Popen(["ping.exe",hostname],stdout = subprocess.PIPE).communicate()[0]
print(output)
if ('unreachable' in output):
print("Offline")
On peut aussi tester de cette façon le "Request timed out".
Solution 2 : Utilisation d'une socket (adapté du code original donc non garanti)
s = socket(AF_INET, SOCK_STREAM) # Creates socket
host = 'localhost' # Enter the IP of the workstation here
port = 80 # Select port which should be pinged
try:
s.connect((host, port)) # tries to connect to the host
except ConnectionRefusedError: # if failed to connect
print("Server offline") # server is offline
s.close() # close socket