加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用 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']}

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读