A Golang library to get your external ip from multiple services.
https://godoc.org/github.com/GlenDC/go-external-ip
Using the library can as simple as the following (runnable) example:
package main
import (
"fmt"
externalip "github.com/glendc/go-external-ip"
)
func main() {
// Create the default consensus,
// using the default configuration and no logger.
consensus := externalip.DefaultConsensus(nil, nil)
// By default Ipv4 or Ipv6 is returned,
// use the function below to limit yourself to IPv4,
// or pass in `6` instead to limit yourself to IPv6.
// consensus.UseIPProtocol(4)
// Get your IP,
// which is never <nil> when err is <nil>.
ip, err := consensus.ExternalIP()
if err == nil {
fmt.Println(ip.String()) // print IPv4/IPv6 in string format
}
}
Please read the documentation for more information.
This library also comes with a standalone command line application, which can be used to get your external IP, directly from your terminal.
$ go install github.com/glendc/go-external-ip/cmd/exip
$ exip -h
Retrieve your external IP.
Usage:
exip [flags]
Flags:
-h help
show this usage message
-p uint
IP Protocol to be used (0, 4, or 6)
-t duration
consensus's voting timeout (default 5s)
-v log errors to STDERR, when defined