使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
2016-12-12 23:28
946 查看
我们可以使用 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 系统信息(通过dmidecode命令)
- linux系统使用python获取cpu信息脚本分享
- linux 通过Ip获取主机名等信息gethostbyaddr()等。
- linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)
- 虚拟机装的linux,打开终端后无法使用ifconfig命令查看ip地址
- linux系统使用python获取内存使用信息
- 使用 Python 获取 Linux 系统信息
- 使用Python获取Linux系统的各种信息
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用 Python 获取 Linux 系统信息的代码
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用ps命令获取Linux环境下全部RAC集群进程信息
- linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)
- python学习五:执行linux命令的两种方法、提高运行效率、进制转换、切片详解、ip和mac获取
- python 在linux下通过top,和dh命令获得cpu,内存,以及硬盘信息
- (转载)Linux网络编程-使用gethostbyaddr,通过ip地址,得到该ip地址的主机的信息
- 如何使用Linux命令 自动获取IP
- 使用 Python 获取 Linux 系统信息的代码
- 使用Python获取Linux系统的各种信息