Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python: check if IP or DNS

Tags:

python

regex

ip

dns

how can one check if variable contains DNS name or IP address in python ?

like image 873
m1k3y3 Avatar asked Mar 28 '11 15:03

m1k3y3


2 Answers

This will work.

import socket
host = "localhost"
if socket.gethostbyname(host) == host:
    print "It's an IP"
else:
    print "It's a host name"
like image 130
Rumple Stiltskin Avatar answered Nov 14 '22 23:11

Rumple Stiltskin


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
like image 26
Sandro Munda Avatar answered Nov 14 '22 23:11

Sandro Munda