Search code examples
pythonhostname

python: check if a hostname is resolved


How can I have a function in python that returns 1 if the a hostname resolves and 0 if a hostname does not.

I couldn't find anything useful, any thoughts?

Thanks,


Solution

  • You can use socket.gethostbyname() for this:

    >>> import socket
    >>> socket.gethostbyname('google.com')
    '74.125.224.198'
    >>> socket.gethostbyname('foo')           # no host 'foo' exists on the network
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    socket.gaierror: [Errno 8] nodename nor servname provided, or not known
    

    Your function might look like this:

    def hostname_resolves(hostname):
        try:
            socket.gethostbyname(hostname)
            return 1
        except socket.error:
            return 0
    

    Example:

    >>> hostname_resolves('google.com')
    1
    >>> hostname_resolves('foo')
    0