38

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,

1
  • 1
    Returning 0/1 is very 'unpythonic' instead of True/False. It would be some extremely specific code that could even tell them apart as 1 == True, 0 == False, True + True == 2, and sum(n % 2 == 0 for n in range(1000)) == 500 Commented May 24, 2019 at 18:28

1 Answer 1

90

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.