使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
发布时间:2021-07-06 06:09:40 所属栏目:大数据 来源: https://www.jb51.cc
导读:我们可以使用 python 代码通过调用 ifconfig 命令来获取 Linux 主机的 IP 相关信息,包括:网卡名称、MAC地址、IP地址等。 第一种实现方式: 1 # !/usr/bin/python 2 encoding: utf-8 3 4 from subprocess import Popen,PIPE 5 6 def getIfconfig(): 7 p = P
我们可以使用 python 代码通过调用 ifconfig 命令来获取 Linux 主机的 IP 相关信息,包括:网卡名称、MAC地址、IP地址等。 第一种实现方式: 1 #!/usr/bin/python 2 encoding: utf-8 3 4 from subprocess import Popen,PIPE 5 6 def getIfconfig(): 7 p = Popen(['ifconfig'],stdout = PIPE) 8 data = p.stdout.read().split(nn') 9 return [i for i in data if i and not i.startswith(lo)] 10 11 parseIfconfig(data): 12 dic = {} 13 for devs in data: 14 lines = devs.split(n15 devname = lines[0].split()[0] 16 macaddr = lines[0].split()[-1] 17 ipaddr = lines[1].split()[1].split(:')[118 dic[devname] = [ipaddr,macaddr] 19 return dic 20 21 22 if __name__ == __main__: 23 data = getIfconfig() 24 print parseIfconfig(data) ? ? 第二种实现方式: getIP(): 8 stdout,1)"> p.communicate() 9 data = [i in stdout.split(') if i] 10 data 11 12 genIP(data): 13 new_line = '' 14 lines = [] 15 for line 16 line[0].strip(): 17 lines.append(new_line) 18 new_line = line + ' 19 else20 new_line += line + 21 lines.append(new_line) 22 in lines 23 24 parseIP(data): 25 dic =26 27 lines = devs.split(28 devname =29 macaddr = lines[0].split()[-130 ipaddr = lines[1].split()[1].split(31 dic[devname] =32 33 34 35 data = getIP() 36 nics = genIP(data) 37 print parseIP(nics) ? 第三种方式实现(正则表达式): 5 re 6 7 8 p = Popen([ 9 data = p.stdout.read().split(11 13 dic =14 re.M 多行模式,改变'^'和'$'的行为 16 re_devname = re.compile(r(w+).*Link encap,re.M) 17 re_macaddr = re.compile(rHWaddrs([0-9A-F:]{17})18 re_ipaddr = re.compile(rinet addr:([d.]{7,15})19 devname = re_devname.search(line) 20 mac = re_macaddr.search(line) 21 ip = re_ipaddr.search(line) 22 devname: 23 devname = devname.group(124 25 devname = 26 27 mac: 28 mac = mac.group(129 30 mac = 31 32 ip: 33 ip = ip.group(134 35 ip = 36 dic[devname] = [mac,ip] 38 39 40 data =41 print parseIfconfig(data) 实验结果: {eth1': [00:0C:29:18:1C:7F',172.16.254.8eth000:0C:29:18:1C:75192.168.0.8']} ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Python3 连接各类数据库(Mysql、Mssql、Oracle)
- 使用包含关键字的字符串在PHP中进行MySql全文搜索
- php – 可以用MariaDB无缝替换MySQL,还是在这种情况下有变
- Spring 源码学习系列
- php – Doctrine ORM Criteria – 动态orX
- asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授
- 100天搞定机器学习|Day23-25 决策树及Python实现
- 知瓜数据:2020年淘宝直播数据分析报告
- Spring Cloud系列:不重启eureka,清除down掉的服务
- [Go]解决 can't load package: cannot find module pro