[Python] Emulare il comando ping...

Giampaolo Rodolà g.rodola a gmail.com
Mer 14 Mar 2012 02:15:40 CET


Il 13 marzo 2012 08:49, Giorgio Zoppi <giorgio.zoppi a gmail.com> ha scritto:
> raw sockets + icmp
> scapy penso faccia al tuo caso.

Purtroppo questo richiede privilegi di root.
Ci ho sbattuto la testa un buon paio d'ore sul problema e sono giunto
alla conclusione che l'unica soluzione è parsare l'output di 'ping' e
tanti saluti.
Se può tornare utile all'OP, eccolo qui (funzia solo su UNIX):


from subprocess import call, PIPE

def ping(host, timeout=10):
    """Return True if host is up."""
    # -q = quiet output
    # -c = count
    # -w = total timeout
    # -W = timeout for a single ICMP REPLY
    # -n = no DNS resolution for the output
    timeout = str(timeout)
    assert timeout.isdigit(), timeout
    retcode = call(["ping", "-q", "-c", "1", "-w", timeout, "-W", "1",
"-n", host],
                       stdout=PIPE)
    return True if retcode == 0 else False


Maggiori informazioni sulla lista Python