【发布时间】:2015-06-08 20:55:22
【问题描述】:
我的目标是编写一个 Python 脚本,为用户提供一系列特定设备的链接本地 IPv6 地址。我的技术是发送多播 ping,然后使用邻居发现来获取地址列表,然后我可以过滤掉。
第一步是这样的:
output = subprocess.check_output(['ping6', '-c', '2', 'ff02::1%en0'])
问题在于末尾的 en0 一词。它不是一个常数。在 MacOS 上是 en0,但在 Linux 上是 eth0 或者可能是 br0。 Windows 有不同的命令但同样的问题。如果没有接口限定符,ping6 命令将不起作用。
此外,某些系统可能有多个接口。
那么 Python 脚本如何获取这些接口的列表呢?
或者,这可以通过使用 socket 包而不是 subprocess 来完成吗? (我不希望我的脚本需要特权模式,而使用 ping 可以解决这个问题。)
【问题讨论】: