Golang 通过 MAC 地址查询 IP 地址

在 Golang 中,可以使用 net 包来获取网络接口信息,包括 MAC 地址和 IP 地址。

步骤:

  1. 使用 net.InterfaceByName 函数获取指定网卡的信息,包括其对应的 IP 地址。
  2. 使用 net.ParseMAC 函数将 MAC 地址字符串转换成 net.HardwareAddr 类型。
  3. 使用 net.Interfaces 函数遍历所有网卡。
  4. 查找与指定 MAC 地址匹配的网卡,并获取其对应的 IP 地址。

代码示例:

package main

import (
    'fmt'
    'net'
    'strings'
)

func main() {
    mac := '00:11:22:33:44:55'
    iface, err := net.InterfaceByName('en0') // 指定网卡名称
    if err != nil {
        fmt.Println(err)
        return
    }

    addrs, err := iface.Addrs()
    if err != nil {
        fmt.Println(err)
        return
    }

    for _, addr := range addrs {
        if strings.HasPrefix(addr.String(), '192.168.') { // 过滤出指定网段的 IP 地址
            fmt.Println('IP address:', addr)
        }
    }

    macAddr, err := net.ParseMAC(mac)
    if err != nil {
        fmt.Println(err)
        return
    }

    ifaces, err := net.Interfaces()
    if err != nil {
        fmt.Println(err)
        return
    }

    for _, iface := range ifaces {
        if iface.HardwareAddr.String() == macAddr.String() {
            addrs, err := iface.Addrs()
            if err != nil {
                fmt.Println(err)
                return
            }

            for _, addr := range addrs {
                if strings.HasPrefix(addr.String(), '192.168.') {
                    fmt.Println('IP address:', addr)
                }
            }
        }
    }
}

注意事项:

  • 将代码中的网卡名称 en0 和 MAC 地址 00:11:22:33:44:55 替换为实际值。
  • 可以根据需要修改代码,例如过滤不同网段的 IP 地址。
  • 该代码示例仅供参考,实际应用中可能需要根据具体情况进行调整。
Golang 通过 MAC 地址查询 IP 地址

原文地址: https://www.cveoy.top/t/topic/fXEc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录