12.5 读取网络接口的配置文件
package main import ( "fmt" "net" ) func main() { interfaces, err := net.Interfaces() if err != nil { fmt.Println(err) return }
Last updated
package main import ( "fmt" "net" ) func main() { interfaces, err := net.Interfaces() if err != nil { fmt.Println(err) return }
Last updated
for _, i := range interfaces {
fmt.Printf("Interface: %v\n", i.Name)
byName, err := net.InterfaceByName(i.Name)
if err != nil {
fmt.Println(err)
}> ```go
> addresses, err := byName.Addrs()
> for k, v := range addresses {
> fmt.Printf("Interface Address #%v: %v\n", k, v.String())
> }
> fmt.Println()
> }
> }
>$ go run netConfig.go
Interface: lo0
Interface Address #0: 127.0.0.1/8
Interface Address #1: ::1/128
Interface Address #2: fe80::1/64
Interface: gif0
Interface: stf0
Interface: XHC20
Interface: en0
Interface Address #0: fe80::18fa:901a:ea9:eb5f/64
Interface Address #1: 192.168.1.200/24
Interface Address #2: 2a02:587:3006:b800:1cb8:bf1b:b154:4d0c/64
Interface Address #3: 2a02:587:3006:b800:d84a:f0c:c932:35d1/64
Interface: en1
Interface: p2p0
Interface: awdl0
Interface: en2
Interface: en3
Interface: bridge0
Interface: utun0
Interface Address #0: fe80::2514:c3a3:ca83:e1c6/64
Interface: utun1
Interface Address #0: fe80::4e0b:a9a6:9abe:81a4/64
Interface: en5
Interface Address #0: fe80::1cb4:a29e:97bc:6fb5/64
Interface Address #1: 169.254.72.59/16$ go run netConfig.go
Interface: lo
Interface Address #0: 127.0.0.1/8
Interface Address #1: ::1/128
Interface: dummy0
Interface: eth0
Interface Address #0: 10.74.193.253/24
Interface Address #1: 2a01:7e00::f03c:91ff:fe69:1381/64
Interface Address #2: fe80::f03c:91ff:fe69:1381/64
Interface: teql0
Interface: tunl0
Interface: gre0
Interface: gretap0
Interface: erspan0
Interface: ip_vti0
Interface: ip6_vti0
Interface: sit0
Interface: ip6tnl0
Interface: ip6gre0type Interface struct {
Index int
MTU int
Name string
HardwareAddr HardwareAddr
Flags Flags
}package main
import (
"fmt"
"net"
)> ```go
> func main() {
> interfaces, err := net.Interfaces()
>
> if err != nil {
> fmt.Print(err)
> return
> }
>> ```go
> for _, i := range interfaces {
> fmt.Printf("Name: %v\n", i.Name)
> fmt.Println("Interface Flags:", i.Flags.String())
> fmt.Println("Interface MTU:", i.MTU)
> fmt.Println("Interface Hardware Address:", i.HardwareAddr)
> fmt.Println()
> }
> }
>$ go run netCapabilities.go
Name: lo0
Interface Flags: up|loopback|multicast
Interface MTU: 16384
Interface Hardware Address:
Name: gif0
Interface Flags: pointtopoint|multicast
Interface MTU: 1280
Interface Hardware Address:
Name: stf0
Interface Flags: 0
Interface MTU: 1280
Interface Hardware Address:
Name: XHC20
Interface Flags: 0
Interface MTU: 0
Interface Hardware Address:
Name: en0
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: 98:5a:eb:d7:84:cd
Name: en1
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: d0:03:4b:cf:84:d3
Name: p2p0
Interface Flags: broadcast|multicast
Interface MTU: 2304
Interface Hardware Address: 02:03:4b:cf:84:d3
Name: awdl0
Interface Flags: broadcast|multicast
Interface MTU: 1484
Interface Hardware Address: 02:ac:d4:3b:d9:29
Name: en2
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: 0a:00:00:a5:32:b0
Name: en3
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: 0a:00:00:a5:32:b1
Name: bridge0
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: 0a:00:00:a5:32:b0
Name: utun0
Interface Flags: up|pointtopoint|multicast
Interface MTU: 2000
Interface Hardware Address:
Name: utun1
Interface Flags: up|pointtopoint|multicast
Interface MTU: 1380
Interface Hardware Address:
Name: en5
Interface Flags: up|broadcast|multicast
Interface MTU: 1500
Interface Hardware Address: 6e:72:e7:1b:cd:5f