Bonjour,
Je souhaite sonder plusieurs hôtes qui ont le bon goût de ne pas répondre au ping, ni à tout autre service que j’ai pu tester.
J’ai donc écrit, à l’arrache, un fonction en Python pour le ping :
from subprocess import call, Popen, PIPE, DEVNULL
from socket import gethostbyname
def non_ping_test (host):
try:
call (['/usr/bin/ping', '-c', '1', '-w', '1', host], stdout = DEVNULL, stderr = DEVNULL)
ip = gethostbyname (host)
neighbor = Popen (['/usr/bin/ip', 'neigh', 'get', 'to', ip, 'dev', 'enp8s0'], stdin = DEVNULL, stdout = PIPE, stderr = DEVNULL).communicate () [0].decode ('UTF-8')
return ('REACHABLE' in neighbor)
except Exception:
return (False)
En fait, le but est de faire une requête ARP et de voir si l’hôte répond, au lieu d’utiliser le ping, cependant, je n’ai pas trouvé d’autre façon de faire ça.
Est-ce que quelqu’un a une idée ?