簡體   English   中英

區分 IP 地址和 FQDN

[英]Distinguish between an IP address and FQDN

您是否知道是否有任何模式/邏輯可用於區分 IP 地址和 python 中的 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

什么是 case addy 是 fqdn? 如果輸入字符串只是 IP 地址,我希望調用 is_valid_ipv4。 我需要 FQDN 的模式嗎? 如何區分 IP 和 FQDN?

Python 知道 IP 地址。 同時,這個答案為驗證 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")

就個人而言,我會使用 regex 在 Python 中,您可以使用re package。

為每個(IP 和 FQDN)編寫一個模式,看看哪個得到匹配( re.match() )。

以下是一些有用的鏈接:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM