zoukankan      html  css  js  c++  java
  • python 获取 Linux 的 IP 信息(通过 ifconfig 命令)

    我们可以使用 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('
    
    ')
     9     return [i for i in data if i and not i.startswith('lo')]
    10 
    11 def parseIfconfig(data):
    12     dic = {}
    13     for devs in data:
    14         lines = devs.split('
    ')
    15         devname = lines[0].split()[0]
    16         macaddr = lines[0].split()[-1]
    17         ipaddr  = lines[1].split()[1].split(':')[1]
    18         dic[devname] = [ipaddr, macaddr]
    19     return dic
    20         
    21 
    22 if __name__ == '__main__':
    23     data = getIfconfig()
    24     print parseIfconfig(data)

    第二种实现方式:

     1 #!/usr/bin/python
     2 #encoding: utf-8
     3 
     4 from subprocess import Popen, PIPE
     5 
     6 def getIP():
     7     p = Popen(['ifconfig'], stdout = PIPE, stderr = PIPE)
     8     stdout, stderr = p.communicate()
     9     data = [i for i in stdout.split('
    ') if i]
    10     return data
    11 
    12 def genIP(data):
    13     new_line = ''
    14     lines = []
    15     for line in data:
    16         if line[0].strip():
    17             lines.append(new_line)
    18             new_line = line + '
    '
    19         else:
    20             new_line += line + '
    '
    21     lines.append(new_line)
    22     return [i for i in lines if i and not i.startswith('lo')]
    23 
    24 def parseIP(data):
    25     dic = {}
    26     for devs in data:
    27         lines = devs.split('
    ')
    28         devname = lines[0].split()[0]
    29         macaddr = lines[0].split()[-1]
    30         ipaddr  = lines[1].split()[1].split(':')[1]
    31         dic[devname] = [ipaddr, macaddr]
    32     return dic
    33 
    34 if __name__ == '__main__':
    35     data = getIP()
    36     nics = genIP(data)
    37     print parseIP(nics)
  • 相关阅读:
    mybatis plus 获取新增实体的主键
    通过 Feign 进行文件上传
    mybatis plus 更新值为null的字段
    idea 配置 service 服务,多模块同时启动
    通过设置 Chrome 解决开发调用跨域问题
    xargs 命令教程
    我的Windows 10 垃圾清理秘诀(不用优化软件)
    BugReport 分析利器 ChkBugReport
    语言与地区简码大全
    linux 将内容强制输出到终端
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/12320369.html
Copyright © 2011-2022 走看看