修改项目结构
This commit is contained in:
77
cmii-uav-watchdog-agent/host_info/net_service.go
Normal file
77
cmii-uav-watchdog-agent/host_info/net_service.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"cmii-uav-watchdog-common/models"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// getMACAddress 获取指定接口的 MAC 地址
|
||||
func getMACAddress(iface net.Interface) (string, error) {
|
||||
_, err := iface.Addrs()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 获取 MAC 地址
|
||||
return iface.HardwareAddr.String(), nil
|
||||
}
|
||||
|
||||
// getNetworkInterfaces 获取网卡信息
|
||||
func GetNetworkInterfaces() []models.NetworkInterfaceInfo {
|
||||
var interfaces []models.NetworkInterfaceInfo
|
||||
|
||||
// 获取所有网络接口
|
||||
ifaces, err := net.Interfaces()
|
||||
if err != nil {
|
||||
fmt.Println("Error getting network interfaces:", err)
|
||||
return []models.NetworkInterfaceInfo{{Name: "unknown", MACAddress: "00:00:00:00:00:00", IPAddresses: []string{}}}
|
||||
}
|
||||
|
||||
for _, iface := range ifaces {
|
||||
// 过滤掉 Docker 和 Kubernetes 网络插件创建的网卡
|
||||
if strings.HasPrefix(iface.Name, "docker") || strings.HasPrefix(iface.Name, "cali") ||
|
||||
strings.HasPrefix(iface.Name, "flannel") || strings.HasPrefix(iface.Name, "br") ||
|
||||
strings.HasPrefix(iface.Name, "lo") || strings.HasPrefix(iface.Name, "tunl0") {
|
||||
continue
|
||||
}
|
||||
|
||||
// 获取 MAC 地址
|
||||
macAddress, err := getMACAddress(iface)
|
||||
if err != nil {
|
||||
fmt.Println("Error getting MAC address for", iface.Name, ":", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// 获取有效的 IP 地址
|
||||
var ipAddresses []string
|
||||
addrs, err := iface.Addrs()
|
||||
if err != nil {
|
||||
fmt.Println("Error getting addresses for", iface.Name, ":", err)
|
||||
continue
|
||||
}
|
||||
|
||||
for _, addr := range addrs {
|
||||
if ipNet, ok := addr.(*net.IPNet); ok && ipNet.IP.To4() != nil {
|
||||
ipAddresses = append(ipAddresses, ipNet.IP.String())
|
||||
}
|
||||
}
|
||||
|
||||
// 仅在有 IP 地址时才添加到接口列表
|
||||
if len(ipAddresses) > 0 {
|
||||
interfaces = append(interfaces, models.NetworkInterfaceInfo{
|
||||
Name: iface.Name,
|
||||
MACAddress: macAddress,
|
||||
IPAddresses: ipAddresses,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有找到任何有效的接口,返回默认值
|
||||
if len(interfaces) == 0 {
|
||||
return []models.NetworkInterfaceInfo{{Name: "unknown", MACAddress: "00:00:00:00:00:00", IPAddresses: []string{}}}
|
||||
}
|
||||
|
||||
return interfaces
|
||||
}
|
||||
Reference in New Issue
Block a user