我们可以使用 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 命令)的更多相关文章

  1. python学习之最简单的获取本机ip信息的小程序

    文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...

  2. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  3. python获取系统内存占用信息的实例方法

    psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...

  4. python 获取本机IP的三种方式

    python获取本机IP的方式 第一种: #!/usr/bin/python import socket import fcntl import struct def get_ip_address(i ...

  5. Python - 获取本机IP地址、Mac地址

    Python - 获取本机IP地址.Mac地址 在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 直接看代码: # Python - 获取本机I ...

  6. Python获取内网IP

    Python 获取本机内网IP 本文记录使用Python获取本机IP的两种方法. 通过hostname来获取本机IP import socket print(socket.gethostbyname( ...

  7. 用Python获取Linux资源信息的三种方法

    方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*- import socket import psutil class NodeReso ...

  8. 使用Python获取Linux系统的各种信息

    哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份解释不同之处的备选代码 ...

  9. python 提取linux的硬件信息

    1.代码实现目的 注:代码可以直接粘贴使用 为了实现对主机的整体有明确的了解,实现了下面的代码功能 代码主要功能是: 提取到主机的内存.硬盘.CPU.型号等信息 插入到mysql的数据库中 2.代码具 ...

随机推荐

  1. TP框架执行流程分许

    1. index.php 入口文件 2. ThinkPHP/ThinkPHP.php 在php5.3版本以后 设置常量有两种方式: const name = value; 作用域根据当前命名空间决定 ...

  2. 锁升级(Lock Escalations)——它们经常发生么?

    前段时间,我写了一些SQL Server里锁升级的基础知识,还有它是如何影响执行计划的.今天,我想进一步谈下锁升级: 锁升级什么时候发生? 通常在SQL Server里如果在SQL语句里你请求的行数超 ...

  3. HTTP首部

    前面有几篇博文介绍了HTTP协议.HTTP请求方法详解.Javascript中Cookie的那些事儿.HTTPS,今天我们来聊一聊关于HTTP首部的那些事儿 HTTP协议的请求和响应报文中肯定包含HT ...

  4. 部署.NET开发环境

    昨晚把家里的电脑重新部署.NET开发环境.从晚上21点安装到今天凌晨3点多才完成,还算顺利,但是耗时最漫长莫过于在安装Visual Studio 2015 Update3...... 第一,全新安装W ...

  5. ASP.NET Core开发-后台任务利器Hangfire使用

    ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也 ...

  6. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

  7. 响应式WEB设计的9项基本原则

    响 应式Web设计对于解决多类型屏幕问题来说是个不错方案,但从印刷的角度来看,其却存在着很多的困难.没有固定的页面尺寸.没有毫米或英寸,没有任何物理 限制,让人感到无从下手.随着建立网站可用的各种小工 ...

  8. 疯狂Android讲义 - 学习笔记(六)

    第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 ...

  9. No.025:Reverse Nodes in k-Group

    问题: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list ...

  10. python计算器

    思路:优先级处理思路一:正则表达式+递归(计算时间慢)思路二:堆栈的方式队列:先进先出电梯-->队列上电梯(入队123):第三个人3,第二个人2,第一个人1>>> li = [ ...