package main import ( "fmt" "net" "strings" ) func main() { //---------------------- // Get the local machine IP address // https://www.socketloop.com/tutorials/golang-how-do-I-get-the-local-ip-non-loopback-address //---------------------- var currentIP, currentNetworkHardwareName string // get all the system's or local machine's network interfaces interfaces, _ := net.Interfaces() for _, interf := range interfaces { if addrs, err := interf.Addrs(); err == nil { for _, addr := range addrs { // check the address type and if it is not a loopback the display it // = GET LOCAL IP ADDRESS if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { currentIP = ipnet.IP.String() // only interested in the name with current IP address` if strings.Contains(addr.String(), currentIP) { currentNetworkHardwareName = interf.Name } macAddress := interf.HardwareAddr hwAddr, err := net.ParseMAC(macAddress.String()) if err != nil { continue } currentNetworkHardwareName = strings.Replace(currentNetworkHardwareName, " ", "", -1) fmt.Printf("interface,name=%s,ip_address=%s,mac_address=%s status=1\n", currentNetworkHardwareName, currentIP, hwAddr) } } } } } }