python: check if a hostname is resolved

前端 未结 1 1775
甜味超标
甜味超标 2020-12-15 03:54

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?

T

相关标签:
1条回答
  • 2020-12-15 04:52

    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
    
    0 讨论(0)
提交回复
热议问题