Извлечение типа и имени сетевого интерфейса в GoLang на компьютере CentOS - PullRequest
0 голосов
/ 30 марта 2020

У меня есть виртуальная машина CentOS, и я могу запустить на ней двоичный файл Go. Машина работает с docker контейнерами и т. Д. c, а также с другим кодом Go. Я пытаюсь определить по коду Go, что это за список интерфейсов типа "Ethe rnet". Проблема в том, что в объекте, который я получаю из библиотеки Go, нет категории, которую я могу найти. В основном, контейнеры docker также создают порты veth, могут быть порты обратной связи и так далее и тому подобное. Но меня интересует только фильтрация портов, которые являются rnet портами (а не виртуальными и rnet портами, т. Е. Порты veth должны быть отфильтрованы). Я не хочу ни lo, ни docker0. Проблема в том, что я не могу легко использовать сопоставление строк на основе имени и решить, потому что имя порта может быть eth или ens или любое другое имя на linux машине.

У меня есть пример кода и пример вывода, но я пытаюсь понять, как правильно получить эти порты.

package main

import (
    "fmt"
    "net"
    "os"
)

func availableInterfaces() {

    interfaces, err := net.Interfaces()

    if err != nil {
        fmt.Print(err)
        os.Exit(0)
    }

    fmt.Println("Available network interfaces on this machine : ")
    for _, i := range interfaces {
        //fmt.Printf("Name : %v \n", i.Name)
        fmt.Printf("Full object : %+v \n", i)
    }
}

func main() {
    availableInterfaces()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...