欢迎使用CSDN-markdown编辑器
来源:互联网 发布:获取当前系统时间 java 编辑:程序博客网 时间:2024/06/01 17:54
Ubuntu16.04 使用Python获取本机IP
python版本:2.7.12
所用模块:os, re
概述:
1. 网络上获取本机IP,基本上有三种方法,分别是使用socket的gethostbyname()和gethostbyname_ex()配合gethostname()函数使用,以及一种我看不太懂的东西。
2. 前两种方法,我这机器行不通,总是拿到lo的IP,但问题是我是用的无线,拿不到无线网卡的地址
基本思路:使用os模块执行ubuntu的命令,将结果用正则表达式处理,获取IP
#-*- coding:utf-8 -*-import osimport re#使用os.popen()函数执行ifconfig命令,结果为file对象,将其传入cmd_file保存cmd_file = os.popen('ifconfig')#使用file对象的read()方法获取cmd_file的内容cmd_result = cmd_file.read()
下图是我随便找的一个运行ifconfig命令后的结果,照着这个构造匹配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)#循环打印获取到的IPfor ip in ip_list: print ip[1]
贴一下完整代码
#-*- coding:utf-8 -*-import osimport 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)#循环打印获取到的IPfor ip in ip_list: print ip[1]
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException异常
- C语言学习心得一:__stdcall、__cdcel和__fastcall三者的区别
- 模板方法
- OC代码中使用Swift文件的实践
- 面试题4:替换空格
- 欢迎使用CSDN-markdown编辑器
- hdu2055 两个ac代码和一个无法ac的代码
- 九度OJ题目1198:a+b
- H.264中的NAL单元类型 nal_unit_type
- 题目1176:树查找 九度OJ
- nyoj 82 迷宫寻宝(一)BFS
- 等价二叉树
- POJ-2010-优先队列
- Lua闭包方式创建对象表。