golang获取机器的host和ip地址

1,832 阅读1分钟

背景

在某些场景下,需要机器的host名和ip,特此记录一下golang的写法

show code

package utility

import (
   "fmt"
   "net"
   "os"
)

func GeLocalIP() string {
   addrs, err := net.InterfaceAddrs()
   if err != nil {
      fmt.Println("get net interface address failed, err = ", err.Error())
      return ""
   }
   for _, addr := range addrs {
      if ip, ok := addr.(*net.IPNet); ok && !ip.IP.IsLoopback() {
         if ip.IP.To4() != nil {
            return ip.IP.String()
         }
      }
   }
   return ""
}

func GetHostname() string {
   hostname, err := os.Hostname()
   if err != nil {
      fmt.Println("get hostname failed, err = ", err.Error())
      return ""
   }
   return hostname
}

func GetIP() {
   conn, error := net.Dial("udp", "8.8.8.8:80")
   if error != nil {
      fmt.Println(error)

   }

   defer conn.Close()
   ipAddress := conn.LocalAddr().(*net.UDPAddr)
   fmt.Println("get ip", ipAddress)
}

result

image.png