Ubuntu16.04 使用Python获取本机IP
2017-04-12 20:12
337 查看
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 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的模式
使用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]
贴一下完整代码
4000
[code]#-*- 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]
相关文章推荐
- Python使用django获取用户IP地址的方法
- Ubuntu下使用Python-opencv获取海康威视RTSP码流教程
- [PyImageSearch] Ubuntu16.04 使用OpenCV和python识别信用卡 OCR
- Ubuntu16.04上使用Anaconda3的Python3.6的pip安装UWSGI报错解决办法
- python3 使用pyaudio OSError: [Errno -9996] Invalid input device (no default output device)-ubuntu16.04
- Python使用django获取用户IP地址的方法
- 使用Python获取自己的IP
- [转载]Ubuntu 16.04编译安装OpenCV(Python2 /python3)(使用虚拟环境)
- Ubuntu16.04(64位)下面使用Doxygen+Graphviz分析python代码
- ubuntu 16.04 LTS - 自动获取 IP 地址
- Ubuntu 16.04使用python3.x相关
- Ubuntu16.04 下同时使用 Python2 和 Python3 及对应的 pip 的方法
- ubuntu server 16.04不重启将自动获取IP更改为固定IP立即生效
- Ubuntu 16.04使用“从互联网自动获取”时间无法写入硬件BIOS的奇怪问题
- 在 python 使用socket 获取 IP
- python:使用netifaces模块获取本机IP网关等信息
- 使用Python获取网段IP个数以及地址清单
- Ubuntu 14.04 server配置使用无线连接DHCP获取IP
- 使用Python获取并处理IP的类型及格式
- 使用python为爬虫获取免费代理ip