python:检查主机名是否已解析

Ami*_*mir 21 python hostname

我如何在python中有一个函数,如果一个主机名解析则返回1,如果一个主机名没有则返回0.

我找不到任何有用的东西,任何想法?

谢谢,

And*_*ark 48

你可以使用socket.gethostbyname()这个:

>>> 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
Run Code Online (Sandbox Code Playgroud)

您的功能可能如下所示:

def hostname_resolves(hostname):
    try:
        socket.gethostbyname(hostname)
        return 1
    except socket.error:
        return 0
Run Code Online (Sandbox Code Playgroud)

例:

>>> hostname_resolves('google.com')
1
>>> hostname_resolves('foo')
0
Run Code Online (Sandbox Code Playgroud)

  • 你听说过"真"和"假"吗?https://docs.python.org/2/library/types.html#types.BooleanType (6认同)
  • 我认为他可能有,但问题明确要求0和1.也许你的评论更好地指向问题作者. (4认同)