python:检查IP或DNS

时间:2011-03-28 15:30:56

标签: python regex dns ip

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

4 个答案:

答案 0 :(得分:9)

这样可行。

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

答案 1 :(得分:7)

您可以使用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

答案 2 :(得分:1)

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

Regular expression to match DNS hostname or IP Address?

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

答案 3 :(得分:0)

print 'ip' if s.split('.')[-1].isdigit() else 'domain name'

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