在python中确定CONNECTED接口(linux)的IP地址
在我的 Linux 机器上,3 个网络接口中的 1 个实际上可能连接到互联网。我需要获取当前连接接口的 IP 地址,请记住,我的其他 2 个接口可能已分配 IP 地址,但未连接。
我可以通过每个接口对网站执行 ping 操作,以确定哪个接口具有连接性,但我希望比等待 ping 超时更快地完成此操作。我不想依赖外部网站。
更新:
我的所有接口可能都有 IP 地址和网关。这是针对嵌入式设备的。因此,我们允许用户在 eth0
和 eth1
之间进行选择。但是,如果用户告诉我们使用的接口上没有连接,我们就会回退到说 eth2
(理论上)它总是有效的。
所以我需要做的是首先检查用户的选择是否已连接,如果是则返回该 IP。否则我需要获取eth2
的IP。我可以很好地获取接口的 IP,这只是确定实际连接的是哪个接口。
On my linux machine, 1 of 3 network interfaces may be actually connected to the internet. I need to get the IP address of the currently connected interface, keeping in mind that my other 2 interfaces may be assigned IP addresses, just not be connected.
I can just ping a website through each of my interfaces to determine which one has connectivity, but I'd like to get this faster than waiting for a ping time out. And I'd like to not have to rely on an external website being up.
Update:
All my interfaces may have ip addresses and gateways. This is for an embedded device. So we allow the user to choose between say eth0
and eth1
. But if there's no connection on the interface that the user tells us to use, we fall back to say eth2
which (in theory) will always work.
So what I need to do is first check if the user's selection is connected and if so return that IP. Otherwise I need to get the ip of eth2
. I can get the IPs of the interfaces just fine, it's just determining which one is actually connected.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果系统的默认网关是可靠的,则从
route -n
的输出中获取包含" UG "
(注意空格)的行也将包含网关IP和主接口的接口名称。If the default gateway for the system is reliable, then grab that from the output from
route -n
the line that contains" UG "
(note the spaces) will also contain the IP of the gateway and interface name of the active interface.解决方案在这里: http ://code.activestate.com/recipes/439093-get-names-of-all-up-network-interfaces-linux-only/
the solution is here : http://code.activestate.com/recipes/439093-get-names-of-all-up-network-interfaces-linux-only/