Python中获取主机名和IP地址的方法

在Python中,可以通过socket模块中gethostname()、getfqdn()和gethostbyname()方法获取本地和远程主机名和IP地址。

1 获取本地和远程主机名

1.1 获取本地主机名

可以通过gethostname()方法获取本地主机名,也就是本机的主机名,代码如下所示。

host_name = socket.gethostname()
print('本机主机名是:%s'%host_name)

此时,运行的效果如图1所示。

图1 本机主机名

其中,gethostname()方法得到的本地主机名是字符串格式的。

1.2 获取远程主机名

使用getfqdn()方法获取远程主机名,将远程主机的IP地址作为该方法的参数,代码如下所示。

remote_host_name = socket.getfqdn('192.168.147.129')
print('IP地址是192.168.147.129的远程主机,其主机名是:%s'%remote_host_name)

此时,运行的效果如图2所示。

图2 远程主机名

注意1,要想成功获取远程主机名,需要保证本地主机与远程主机在网络上连通。

2 获取本地和远程主机的IP地址

可以通过gethostbyname()方法获取本机或远程主机的IP地址,只需要将本机或远程主机的主机名作为该方法的参数即可。

ip_address = socket.gethostbyname(host_name)
print('本机的IP地址是%s'%ip_address)
remote_host_addr = socket.gethostbyname(remote_host_name)
print('名为WIN-EC116TBKMQH的主机,其IP地址是:%s'%remote_host_addr)

在以上代码中,将host_name,也就是“1 获取本地和远程主机名”中获取到的本地主机名作为参数传递给gethostbyname()方法,可以获得本地主机的IP地址;将“1 获取本地和远程主机名”中获取到的远程主机名作为参数传递给gethostbyname()方法,可以获得远程主机的IP地址。运行效果如图3所示。

图3 获取IP地址

3 获取网站的IP地址

gethostbyname()方法除了可以获取本地和远程主机的IP地址之外,还可以获取网站的IP地址,即将网站的域名作为参数传递给该方法即可。以下代码是获取百度网站的IP地址。

baidu_addr = socket.gethostbyname('www.baidu.com')
print('百度网站的IP地址是:%s'%baidu_addr)

其运行效果如图4所示。

图4 获取百度网站的IP地址

注意2,使用上述代码之前,需要导入socket模块,即

import socket

你可能感兴趣的:(Python网络编程,Python,网络编程,获取主机名及IP地址,gethostname,getfqdn,gethostbyname)