识别物理网络接口?

识别物理网络接口?

我正在做一个网络自动化项目。我正在编写一个 Python 脚本,它将远程扫描 Ubuntu 服务器和网络交换机,然后尽力在图中重建网络的物理拓扑。我认为该脚本可以做到这一点,如下所示:

  1. 对于每个 Ubuntu 服务器,列出该服务器的物理接口。
  2. 如果接口处于 UP/UP 状态,请记下其 MAC 地址。
  3. 对于每个网络交换机,检查所有可以支持终端服务器的 UP/UP 端口。
  4. 检查交换机的 MAC 地址表,查找远端主机的 MAC。
  5. 如果发现匹配,则更新图表。

步骤 1 是目前最令人头疼的问题。当我运行ifconfigip aip link show、、等命令时,我会获得所有网络接口lshw -C network -short(物理和逻辑)的列表。例如,这是我的一台服务器上的接口列表:ls /sys/class/net/netstat -i

bond0.10
bond0.11
br16
br17
eno3
enp216s0
enp94s0f
lo
virbr0
vnet0
vnet1

哪些是物理的?哪些是虚拟的?我可以做出一些有根据的猜测,但这还不够。我想明确地确定哪些接口是物理的,并剔除其余的。

(我没有这些 Ubuntu 机器的管理员权限,所以我无法安装类似的实用程序nmcli。)

任何建议都将不胜感激。

相关内容