在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