区分IP地址和FQDN

时间:2019-10-02 10:34:54

标签: python

您知道是否有任何模式/逻辑可​​用于区分python中的IP地址和FQDN?我有一个脚本可以处理可能是ip或fqdn的用户输入,我想对ip进行ip验证检查,如果是fqdn则不进行验证检查。

addy = "1.2.3.4"
a = addy.split('.')
match = re.search('^(([0-9]|[0-9][0-9]|[0-9][0-9][0-9]))$', a[0])
if match is not None:
   if is_valid_ipv4(addy) == True:
      # code continues

阿迪是什么情况?如果输入字符串只是一个IP地址,我希望调用is_valid_ipv4。我需要FQDN的模式吗?如何区分IP和FQDN?

2 个答案:

答案 0 :(得分:3)

Python知道IP地址。同时,this answer为验证FQDN提供了很好的正则表达式。

import ipaddress
import re

addy = "192.0.2.1"

fqdn_re = re.compile('(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}\.?$)')

try:
    ip_addy = ipaddress.ip_address(addy)
    if ip_addy.version == 4:
        print("IPv4 address")
    elif ip_addy.version == 6:
        print("IPv6 address")
except ValueError:
    if fqdn_re.search(addy):
        print("FQDN address")
    else:
        print("Invalid address")

答案 1 :(得分:-1)

我个人会使用正则表达式。在Python中,您可以使用re包。

为每个(IP和FQDN)写一个模式,看看哪个匹配(re.match())。

以下是一些有用的链接: