Windows 10 平台代码:
import socket hostname = socket.gethostname() print ( "Host name: %s" %hostname) sysinfo = socket.gethostbyname_ex(hostname) ip_addr = sysinfo[2] ip_addr1 = ip_addr[0] ip_addr2 = ip_addr[1] ip_addr3 = ip_addr[2] ip_addr4 = ip_addr[3] print("IP Address: %s" %ip_addr1,ip_addr2,ip_addr3,ip_addr4)
运行结果:
备注:因有虚拟机所以IP比较多
Linux 平台代码:
import socket hostname = socket.gethostname() print ( "Host name: %s" %hostname) sysinfo = socket.gethostbyname_ex(hostname) ip_addr = sysinfo[2] ip_addr1 = ip_addr[0] ip_addr2 = ip_addr[1] print("IP Address: %s" %ip_addr1,ip_addr2)
备注:
经过测试验证socket 是通过解析主机名才能成功也就是这样才可以不然会报错
[root@ocbsap01 sysadmin]# cat /etc/hosts
192.168.10.128 ocbsap01
10.10.10.128 ocbsap01
192.168.10.129 ocbsweb01
192.168.10.130 ocbsweb02
192.168.10.131 ocbsdb01
代码解释:
socket.gethostname() # 获取主机名
socket.gethostbyname_ex() # 在多网卡的情况下通过主机名获取IP地址,IP地址结果为列表形式,print时候主机格式转化,或者队列取值才行