From 40c24024937626eda527b6dbae9fd17954b09006 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Tue, 15 Feb 2022 17:38:09 +0800 Subject: [PATCH] feat: add func GetIps and GetMacAddrs --- netutil/net.go | 40 ++++++++++++++++++++++++++++++++++++++++ netutil/net_test.go | 10 ++++++++++ 2 files changed, 50 insertions(+) diff --git a/netutil/net.go b/netutil/net.go index d531061..fc735f3 100644 --- a/netutil/net.go +++ b/netutil/net.go @@ -47,6 +47,46 @@ func GetPublicIpInfo() (*PublicIpInfo, error) { return &ip, nil } +// GetIps return all ipv4 of system +func GetIps() []string { + var ips []string + + addrs, err := net.InterfaceAddrs() + if err != nil { + return ips + } + + for _, addr := range addrs { + ipNet, isValid := addr.(*net.IPNet) + if isValid && !ipNet.IP.IsLoopback() { + if ipNet.IP.To4() != nil { + ips = append(ips, ipNet.IP.String()) + } + } + } + return ips +} + +// GetMacAddrs get mac address +func GetMacAddrs() []string { + var macAddrs []string + + nets, err := net.Interfaces() + if err != nil { + return macAddrs + } + + for _, net := range nets { + macAddr := net.HardwareAddr.String() + if len(macAddr) == 0 { + continue + } + macAddrs = append(macAddrs, macAddr) + } + + return macAddrs +} + // PublicIpInfo public ip info: country, region, isp, city, lat, lon, ip type PublicIpInfo struct { Status string `json:"status"` diff --git a/netutil/net_test.go b/netutil/net_test.go index 9cd19e8..7773c37 100644 --- a/netutil/net_test.go +++ b/netutil/net_test.go @@ -42,3 +42,13 @@ func TestIsPublicIP(t *testing.T) { assert.Equal(expected[i], actual) } } + +func TestGetIps(t *testing.T) { + ips := GetIps() + t.Log(ips) +} + +func TestGetMacAddrs(t *testing.T) { + macAddrs := GetMacAddrs() + t.Log(macAddrs) +}