【问题标题】:python: check if IP or DNSpython:检查IP或DNS
【发布时间】:2011-07-24 14:19:10
【问题描述】:

如何在 python 中检查变量是否包含 DNS 名称或 IP 地址?

【问题讨论】:

标签: python regex dns ip


【解决方案1】:

这会起作用。

import socket
host = "localhost"
if socket.gethostbyname(host) == host:
    print "It's an IP"
else:
    print "It's a host name"

【讨论】:

    【解决方案2】:

    您可以使用Python的re模块来检查变量的内容是否为ip地址。

    IP地址示例:

    import re
    
    my_ip = "192.168.1.1"
    is_valid = re.match("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", my_ip)
    
    if is_valid:
        print "%s is a valid ip address" % my_ip
    

    主机名示例:

    import re
    
    my_hostname = "testhostname"
    is_valid = re.match("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", my_hostname)
    
    if is_valid:
        print "%s is a valid hostname" % my_hostname
    

    【讨论】:

    【解决方案3】:

    我会查看这个 SO 问题的答案:

    Regular expression to match DNS hostname or IP Address?

    重点是将这两个正则表达式和 OR 组合在一起以获得所需的结果。

    【讨论】:

      【解决方案4】:
      print 'ip' if s.split('.')[-1].isdigit() else 'domain name'
      

      这并不能验证其中任何一个是否格式正确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2020-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多