Python在Ubuntu上获取机器的LAN IP地址

Poo*_*zer 5 python ubuntu network-programming

所以我试图获取程序运行的机器的LAN IP地址,并将其与通过UDP传递给它的IP地址进行比较.

但是当我使用时:

print str(socket.gethostbyname(socket.gethostname()))
Run Code Online (Sandbox Code Playgroud)

它返回127.0.0.1,应该是192.168.1.9.

我查看了linux机器并获取了lo(loopBack)端口的IP地址?我不确切知道那是什么,但它应该是获取eth0的IP地址.

我发现我可以对bash命令"ifconfig eth0"进行子处理,但是返回一个字符串的大块.我可以将它处理到我需要的东西,但这将在beaglebone上每秒运行3次左右,所以我希望它更有效一点.

有更优雅的方式吗?

我可以改变gethostname的目标吗?

为什么它针对的是lo端口?

感谢您的帮助.

min*_*ism 1

netifaces似乎是一个非常可爱的 python 模块,它应该可以满足你的需要。