45 lines
654 B
Go
45 lines
654 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"net"
|
||
|
"os"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
var version string
|
||
|
|
||
|
func main() {
|
||
|
ips := os.Args[1:]
|
||
|
switch {
|
||
|
case len(ips) == 0:
|
||
|
log.Fatal("Expect at least one argument")
|
||
|
case len(ips) >= 2:
|
||
|
log.Fatal("Expect only one argument")
|
||
|
}
|
||
|
|
||
|
ip := strings.Split(ips[0], "/")[0]
|
||
|
|
||
|
interfaces, err := net.Interfaces()
|
||
|
if err != nil {
|
||
|
log.Fatal(err.Error())
|
||
|
}
|
||
|
|
||
|
for _, iface := range interfaces {
|
||
|
addrs, err := iface.Addrs()
|
||
|
if err != nil {
|
||
|
log.Fatal(err.Error())
|
||
|
}
|
||
|
|
||
|
for _, addr := range addrs {
|
||
|
if strings.Split(addr.String(), "/")[0] == ip {
|
||
|
fmt.Fprintln(os.Stdout, iface.Name)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
os.Exit(1)
|
||
|
}
|