我们可以使用 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. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

  2. 单片机DA转换实现正弦波

    使用的是查表法: 1.c文件: #include "reg52.h" #include <intrins.h> #include <i2c.h> #defi ...

  3. css毛玻璃效果

    毛玻璃其实就是磨砂玻璃,能够模糊的看清背后的风景,让人感觉有种朦胧美,让界面看上去有些层次感. 比如: 高大上啊,接下来肯定是眼馋手痒的过程... 当然,用ps搞一个全景毛玻璃背景毫无疑问是最省事的, ...

  4. sql常用语句(1)

    --排序 select Row_Number() over(order by a.UserName) as Num --区分性别 then '男' else '女' end SexName Sqlse ...

  5. 小米网css3导航下拉菜单代码

    效果:http://hovertree.com/texiao/css3/19/ 代码如下: <!doctype html> <!-- W3C规范 --> <html la ...

  6. ASP.NET MVC 解析模板生成静态页一(RazorEngine)

    简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...

  7. Myeclipse 的hadoop环境搭建

    https://issues.apache.org/jira/secure/attachment/12460491/hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar ...

  8. 自从升级到macOS后,整个人都不好了

    电脑一直莫名的随机卡死,各种软件都出现了一些崩溃和不稳定的情况. Siri就是个笑话,启用后就开始索引本地硬盘,不管你有没有正在工作:直到你启动Siri,会暂停一下,然后就算是你开在哪不动,过两分钟, ...

  9. Deployment options

    Play applications can be deployed virtually anywhere: inside Servlet containers, as standalone serve ...

  10. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...