使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
我们可以使用 python 代码通过调用 ifconfig 命令来获取 Linux 主机的 IP 相关信息,包括:网卡名称、MAC地址、IP地址等。
第一种实现方式:
#!/usr/bin/python
#encoding: utf-8 from subprocess import Popen, PIPE def getIfconfig():
p = Popen(['ifconfig'], stdout = PIPE)
data = p.stdout.read().split('\n\n')
return [i for i in data if i and not i.startswith('lo')] def parseIfconfig(data):
dic = {}
for devs in data:
lines = devs.split('\n')
devname = lines[0].split()[0]
macaddr = lines[0].split()[-1]
ipaddr = lines[1].split()[1].split(':')[1]
dic[devname] = [ipaddr, macaddr]
return dic if __name__ == '__main__':
data = getIfconfig()
print parseIfconfig(data)
第二种实现方式:
#!/usr/bin/python
#encoding: utf-8 from subprocess import Popen, PIPE def getIP():
p = Popen(['ifconfig'], stdout = PIPE, stderr = PIPE)
stdout, stderr = p.communicate()
data = [i for i in stdout.split('\n') if i]
return data def genIP(data):
new_line = ''
lines = []
for line in data:
if line[0].strip():
lines.append(new_line)
new_line = line + '\n'
else:
new_line += line + '\n'
lines.append(new_line)
return [i for i in lines if i and not i.startswith('lo')] def parseIP(data):
dic = {}
for devs in data:
lines = devs.split('\n')
devname = lines[0].split()[0]
macaddr = lines[0].split()[-1]
ipaddr = lines[1].split()[1].split(':')[1]
dic[devname] = [ipaddr, macaddr]
return dic if __name__ == '__main__':
data = getIP()
nics = genIP(data)
print parseIP(nics)
第三种方式实现(正则表达式):
#!/usr/bin/python
#encoding: utf-8 from subprocess import Popen, PIPE
import re def getIfconfig():
p = Popen(['ifconfig'], stdout = PIPE)
data = p.stdout.read().split('\n\n')
return [i for i in data if i and not i.startswith('lo')] def parseIfconfig(data):
dic = {}
# re.M 多行模式,改变'^'和'$'的行为
for line in data:
re_devname = re.compile(r'(\w+).*Link encap', re.M)
re_macaddr = re.compile(r'HWaddr\s([0-9A-F:]{17})', re.M)
re_ipaddr = re.compile(r'inet addr:([\d\.]{7,15})', re.M)
devname = re_devname.search(line)
mac = re_macaddr.search(line)
ip = re_ipaddr.search(line)
if devname:
devname = devname.group(1)
else:
devname = '' if mac:
mac = mac.group(1)
else:
mac = '' if ip:
ip = ip.group(1)
else:
ip = ''
dic[devname] = [mac, ip]
return dic if __name__ == '__main__':
data = getIfconfig()
print parseIfconfig(data)
实验结果:
{'eth1': ['00:0C:29:18:1C:7F', '172.16.254.8'], 'eth0': ['00:0C:29:18:1C:75', '192.168.0.8']}
使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)的更多相关文章
- python学习之最简单的获取本机ip信息的小程序
文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...
- 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...
- python获取系统内存占用信息的实例方法
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...
- python 获取本机IP的三种方式
python获取本机IP的方式 第一种: #!/usr/bin/python import socket import fcntl import struct def get_ip_address(i ...
- Python - 获取本机IP地址、Mac地址
Python - 获取本机IP地址.Mac地址 在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 直接看代码: # Python - 获取本机I ...
- Python获取内网IP
Python 获取本机内网IP 本文记录使用Python获取本机IP的两种方法. 通过hostname来获取本机IP import socket print(socket.gethostbyname( ...
- 用Python获取Linux资源信息的三种方法
方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*- import socket import psutil class NodeReso ...
- 使用Python获取Linux系统的各种信息
哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份解释不同之处的备选代码 ...
- python 提取linux的硬件信息
1.代码实现目的 注:代码可以直接粘贴使用 为了实现对主机的整体有明确的了解,实现了下面的代码功能 代码主要功能是: 提取到主机的内存.硬盘.CPU.型号等信息 插入到mysql的数据库中 2.代码具 ...
随机推荐
- SOA、ESB、NServiceBus、云计算 总结
SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...
- 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch
[源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...
- JDK,JRE,JVM分别是什么?
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关 ...
- Java--Jsp内置对象列表
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- jQuery切换网页皮肤保存到Cookie实例
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/25.htm 以下是源代码: <!DOCTYPE html PUBLIC "-//W3C//D ...
- .NET 各种框架
基于.NET平台常用的框架整理 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度 ...
- [python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅
沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅 事前数据: 前面处理得到的csv文件 文件名前加入“[wait]”等待程序处理 python代码从雅虎股票历史数据api获取数据,计算后面5日的涨跌幅 ...
- MySQL错误(一)
Host 'localhost' is not allowed to connect to this MySQL server 手贱误操作将root用户删除,解决办法: 找到mysql的配置文件 my ...
- ArcGIS中的坐标系统定义与投影转换【转】
ArcGIS中的坐标系统定义与投影转换 坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统 ...