开发者

python: check if IP or DNS

how can one check if variable contains DNS name or IP address i开发者_如何转开发n python ?


This will work.

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


You can use re module of Python to check if the contents of the variable is a ip address.

Example for the ip address :

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

Example for a hostname :

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


I'd check out the answer for this SO question:

Regular expression to match DNS hostname or IP Address?

The main point is to take those two regexs and OR them together to get the desired result.


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

This does not verify if either one is well-formed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜