2017-09-29 5 views
0

J'utilise actuellement python 2.7 et devra faire un ping sur Windows et Linux.Comment saisir l'adresse IP à partir de ping en Python

Je veux créer une fonction qui retournera l'adresse IP d'un ping dans un script python. J'ai actuellement cette fonction

def ping(host): 
    """ 
    Returns True if host responds to a ping request 
    """ 
    import subprocess, platform 

    # Ping parameters as function of OS 
    ping_str = "-n 1" if platform.system().lower()=="windows" else "-c 1" 
    args = "ping " + " " + ping_str + " " + host 
    need_sh = False if platform.system().lower()=="windows" else True 

    # Ping 
    return subprocess.call(args, shell=need_sh) == 0 

En ce moment, il retourne juste vrai ou faux, mais est-il un moyen que je peux courir ping (google.com) et avoir le retour 216.58.217.206. J'ai une liste de serveurs et d'adresses IP et je dois m'assurer que les adresses IP correspondent au nom de domaine complet.

+0

Le code ci-dessus n'a pas d'indentation correcte. Tous les éléments sous la ligne 'def' devraient être indentés. –

+0

Copie possible de [lire sous-processus stdout ligne par ligne] (https://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line) – alfasin

Répondre

1

Vous pouvez utiliser le socket pour obtenir l'adresse IP de l'hôte.

import socket 
print(socket.gethostbyname('www.example.com')