У меня есть виртуальная машина 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()
}