nba*_*ari 5 networking system-calls go
使用Go what 包、本地函数、系统调用可用于获取*nix 系统上的默认网关
我想避免创建包装器 arround netstat、路由、 ip 等命令,或读取、解析现有文件,其想法是获取最可能的操作系统/平台不可知方式的值。
例如,这是route命令的输出:
$ route -n get default
route to: default
destination: default
mask: default
gateway: 192.168.1.1
interface: en1
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
Run Code Online (Sandbox Code Playgroud)
我想做一些类似的事情,以便只打印/获取网关地址/接口。
Cas*_*sey -4
使用https://github.com/golang/net/blob/master/internal/nettest/interface.go上的 RoutedInterface() 代码
示例代码片段:
rifs := nettest.RoutedInterface("ip", net.FlagUp | net.FlagBroadcast)
if rifs != nil {
fmt.Println("Routed interface is ",rifs.HardwareAddr.String())
fmt.Println("Flags are", rifs.Flags.String())
}
Run Code Online (Sandbox Code Playgroud)
注意:您需要将 golang 代码复制到本地库中,因为不允许直接调用 /internal 。