系统教程
您现在的位置是:首页>服务器系统>Ubuntu系统内容

Ubuntu16.04使用Python获取本机IP

时间:2018-04-27 出处:未知复制分享人气(次) 【

Python版本:2.7.12
所用模块:os,re
 
概述:
1.网络上获取本机IP,基本上有三种方法,分别是使用socket的gethostbyname()和gethostbyname_ex()配合gethostname()函数使用,以及一种我看不太懂的东西。
2.前两种方法,我这机器行不通,总是拿到lo的IP,但问题是我是用的无线,拿不到无线网卡的地址
 
基本思路:使用os模块执行ubuntu的命令,将结果用正则表达式处理,获取IP。
#-*- coding:utf-8 -*-
import os
import re
#使用os.popen()函数执行ifconfig命令,结果为file对象,将其传入cmd_file保存
cmd_file = os.popen('ifconfig')
#使用file对象的read()方法获取cmd_file的内容
cmd_result = cmd_file.read()
 
下图是我随便找的一个运行ifconfig命令后的结果,照着这个构造匹配IP的模式。
Ubuntu16.04使用Python获取本机IP
 
使用re模块进行匹配
#构造用于匹配IP的匹配模式
pattern = re.compile(r'(inet.*?地址:)(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})')
#使用re模块的findall函数匹配
ip_list = re.findall(pattern, cmd_result)
#循环打印获取到的IP
for ip in ip_list:
print ip[1]
 
贴一下完整代码:
#-*- coding:utf-8 -*-
import os
import re
#使用os.popen()函数执行ifconfig命令,结果为file对象,将其传入cmd_file保存
cmd_file = os.popen('ifconfig')
#使用file对象的read()方法获取cmd_file的内容
cmd_result = cmd_file.read()
#构造用于匹配IP的匹配模式
pattern = re.compile(r'(inet.*?地址:)(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})')
#使用re模块的findall函数匹配
ip_list = re.findall(pattern, cmd_result)
#循环打印获取到的IP
for ip in ip_list:
print ip[1]
    最新资讯
    热门内容
    小米移动电源能为iPad mini充几次电