python:检查IP或DNS

发布于 2024-10-27 12:27:50 字数 42 浏览 7 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

若水般的淡然安静女子 2024-11-03 12:27:50

这会起作用。

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

This will work.

import socket
host = "localhost"
if socket.gethostbyname(host) == host:
    print "It's an IP"
else:
    print "It's a host name"
灼痛 2024-11-03 12:27:50

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

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
我一直都在从未离去 2024-11-03 12:27:50

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

要匹配的正则表达式DNS 主机名或 IP 地址?

要点是采用这两个正则表达式并将它们“或”在一起以获得所需的结果。

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.

口干舌燥 2024-11-03 12:27:50
print 'ip' if s.split('.')[-1].isdigit() else 'domain name'

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文