当在Unix上的Python脚本中发生错误时,会发送一封电子邮件。
如果IP地址是192.168.100.37(即测试服务器),则要求我将{Testing Environment}添加到邮件主题行中。这样我们就可以有一个脚本版本和一种方式来判断邮件是否来自测试服务器上出错的数据。
然而,当我搜索时,我总是找到以下代码:
import socket
socket.gethostbyname(socket.gethostname())
但是,这给我提供的是127.0.1.1的IP地址。当我使用ifconfig
时,我得到了这个:
eth0 Link encap:Ethernet HWaddr 00:1c:c4:2c:c8:3e
inet addr:192.168.100.37 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:75760697 errors:0 dropped:411180 overruns:0 frame:0
TX packets:23166399 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59525958247 (59.5 GB) TX bytes:10142130096 (10.1 GB)
Interrupt:19 Memory:f0500000-f0520000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:25573544 errors:0 dropped:0 overruns:0 frame:0
TX packets:25573544 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:44531490070 (44.5 GB) TX bytes:44531490070 (44.5 GB)
首先,我不知道它从哪里获取了127.0.1.1,但无论如何那都不是我想要的。当我搜索时,我一直看到同样的语法,Bash脚本或netifaces,并且我正在尝试使用标准库。那么,我怎样才能在Python中获取eth0的IP地址?
127.0.1.1
"。你是不是想说 "127.0.0.1
"?因为这是你的本地回环接口lo
的地址(在你的ifconfig
输出中是第二个条目),也是如果你运行cat /etc/hosts
命令时的第一个条目。 - voices