socket.gethostbyaddr(ip_address)
功能介绍
为了便于说明他们的功能,我们首先从Document中参考相关的说明
gethostname
# gethostname签名
注意:gethostname并不一定总是反悔 完整的认证域名,如果需要该功能可以选择使用getfqdn()
gethostbyname
# gethostbyname签名
注意:
如果 主机名本身就是一个 IPv4地址,那么它将会原样反悔。
gethostbyname(hostname)并不支持 IPv6的解析,如果需要得到 IPv4/v6双协议栈支持,那么你可能需要尝试 getaddrinfo()
gethostbyname_ex()提供了更加复杂的接口,值得尝试
如果 主机名本身就是一个 IPv4地址,那么它将会原样反悔。
gethostbyname(hostname)并不支持 IPv6的解析,如果需要得到 IPv4/v6双协议栈支持,那么你可能需要尝试 getaddrinfo()
gethostbyname_ex()提供了更加复杂的接口,值得尝试
getfqdn
# getfqdn签名
注意:当没有 getfqdn([name])完整认证域名的时候,讲会使用 gethostname()的返回值
gethostbyaddr
# gethostbyaddr签名
注意: gethostname并不一定总是反悔 完整的认证域名,如果需要该功能可以选择使用getfqdn()
喜欢python或者想学习python的朋友可以加QQ群:330637182
例子
我们尝试以下这几个功能型的模块方法:
#! /usr/bin/env python3 # coding: utf-8 import socket def get_machine_info(): full_domain = socket.getfqdn() host_name = socket.gethostname() ip_address = socket.gethostbyname(host_name) host_ipv4_v6 = socket.gethostbyaddr(ip_address) print('完整域名:', full_domain) print('主机名:', host_name) print('ip地址(ipv4):', ip_address) print('主机信息(ipv4/v6):', host_ipv4_v6) if __name__ == '__main__': get_machine_info()
在我的一台桌面版Ubuntu上,我得到了以下信息
#以下信息来自于我的一台桌面版 Ubuntu
$ python3 local_machine_info.py
完整域名: Tuple-Ubuntu-Desktop
主机名:Tuple-Ubuntu-Desktop
ip地址(ipv4): 127.0.1.1
主机信息(ipv4/6) : ('Tuple-Ubuntu-Desktop', [], ['127.0.1.1'])