在python文件中执行时,如何获取该主机的IP地址?

在python文件中执行时,如何获取该主机的IP地址?,python,ip,ip-address,host,Python,Ip,Ip Address,Host,我在不同的主机上执行相同的python文件 python文件中有bind。我第一次在“H1”主机中执行此文件,下一次在“H2”主机中执行。在“H1”主机中执行时,我想使用H1的IP地址进行绑定。在“H2”主机中执行时,我想使用“H2”主机的IP地址进行绑定 因此,在IP地址的位置,我应该给出什么,以便在H1中执行此python文件时获得所需的IP地址,即H1的IP,而在H2中执行此文件时获得H2的IP?如果我们谈论的是IPv4地址,那么在大多数情况下,您不需要将主机地址指定为bind()。从:

我在不同的主机上执行相同的python文件

python文件中有
bind
。我第一次在“H1”主机中执行此文件,下一次在“H2”主机中执行。在“H1”主机中执行时,我想使用H1的IP地址进行绑定。在“H2”主机中执行时,我想使用“H2”主机的IP地址进行绑定


因此,在IP地址的位置,我应该给出什么,以便在H1中执行此python文件时获得所需的IP地址,即H1的IP,而在H2中执行此文件时获得H2的IP?

如果我们谈论的是IPv4地址,那么在大多数情况下,您不需要将主机地址指定为
bind()
。从:

对于IPv4地址,接受两种特殊形式而不是主机地址:空字符串表示
INADDR\u ANY
,字符串
'
表示
INADDR\u BROADCAST

很可能您只想提供空字符串(这将使您的服务侦听所有可用接口)

如果您仍然需要知道脚本正在运行的计算机的主机名,可以使用:

返回一个字符串,其中包含Python解释器当前正在执行的计算机的主机名

如果想知道当前计算机的IP地址,可以使用
gethostbyname(gethostname())
。此操作假设主机存在有效的地址到主机的映射,并且该假设并不始终成立


您只是想要运行python脚本的机器的IP地址吗?这个答案取决于操作系统,但可以在*nix系统上使用。它也可以适用于windows:

try:
   o1 = subprocess.check_output("/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | sed -e s/addr://", shell=True).split()[0]
except:
   o1 = None #parsing failed for some reason

这是非常不清楚的。你不能在绑定时忽略IP吗,它会自动使用主机的IP吗?@aIKid我的python文件是一个服务器。我在不同的主机上执行此操作。我希望该主机的IP地址在我的服务器文件中进行绑定。您是否要求运行脚本的服务器的IP地址。@neethuK import socket;gethostbyaddr(socket.gethostname())我知道你的意思。注意,许多机器有多个IP地址(甚至不包括127.0.0.1)。INADDR_ANY将监听所有可用地址;如果不希望出现这种行为,则需要指定要绑定的地址。