在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO/ golang有沒有類似py的netifaces包來獲取某個(gè)網(wǎng)卡的網(wǎng)關(guān),MAC,子

golang有沒有類似py的netifaces包來獲取某個(gè)網(wǎng)卡的網(wǎng)關(guān),MAC,子網(wǎng)掩碼等信息的第三方庫?

在python中有netifaces包用來獲取某個(gè)網(wǎng)卡的ip,掩碼,網(wǎng)關(guān)等信息
golang的net可以獲取ip,掩碼,貌似也可以獲取mac。那怎么獲取網(wǎng)關(guān)地址,或者有沒有別的類似的第三方庫?
現(xiàn)在目的就是想要根據(jù)網(wǎng)卡名字比如eth1,獲取該網(wǎng)卡的ip地址,子網(wǎng)掩碼,物理地址,網(wǎng)關(guān),DNS

回答
編輯回答
傲寒
2018年8月12日 15:35
編輯回答
青裙

既然標(biāo)準(zhǔn)庫 net 已經(jīng)有方法,那么應(yīng)當(dāng)優(yōu)先使用標(biāo)準(zhǔn)庫(何況該有的都有)

1、獲取Mac Addr、IP、Mask

    // 此處填你的網(wǎng)卡名稱(因?yàn)槟愕男枨笫歉鶕?jù)網(wǎng)卡名字獲取XXX)
    inter, err :=  net.InterfaceByName("eno16777736")
    if err != nil {
        log.Fatalf("無法獲取信息: %v", err)
    }

    // 獲取Mac地址
    fmt.Println("Mac addr: ", inter.HardwareAddr.String())

    addrs, err := inter.Addrs()
    if err != nil {
        log.Fatalln(err)
    }

    // 獲取IP地址,子網(wǎng)掩碼
    for _, addr := range addrs {
        if ip, ok := addr.(*net.IPNet); ok && !ip.IP.IsLoopback() {
            if ip.IP.To4() != nil {
                fmt.Println("IP:", ip.IP)
                fmt.Println("Mask:", ip.Mask)
            }
        }
    }

2、獲取DNS地址

讀取 /etc/resolv.conf 文件中的本地 dns server 地址列表

然后進(jìn)行規(guī)則解析即可

3、獲取物理地址

ARP(Address Resolution Protocol),地址解析協(xié)議,是根據(jù)IP地址獲取物理地址的一個(gè)TCP/IP協(xié)議。主機(jī)發(fā)送信息時(shí)將包含目標(biāo)IP地址的ARP請(qǐng)求廣播到網(wǎng)絡(luò)上的所有主機(jī),并接收返回消息,以此確定目標(biāo)的物理地址

這個(gè)篇幅很大了,簡(jiǎn)單來說就是根據(jù)IP地址獲取物理地址。網(wǎng)上有不少資料,你可以去看看。


你要想一下,你需要的這幾個(gè)東西,不是一個(gè)包能完成的

因?yàn)樗麄儾煌耆峭粋€(gè)東西,各司其職

2017年5月15日 16:53