cmdb_collector.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:ops_agent 作者: sjqzhang 项目源码 文件源码
def get_eth_info(self):
        """
        ?????
        1. ??bond???bond0
        2. ???????eth0:1 
        3. ?ip???eth0(1.1.1.1,2.2.2.2)
        """
        data = []
        addrs = psutil.net_if_addrs()
        stats = psutil.net_if_stats()
        for name, entries in addrs.iteritems():
            eth = {
                'name': name, 
                'mac': '00:00:00:00:00:00', 
                'ip': '', 
                'mask': '', 
                'broadcast': '',
                'status': 'Unknown',
                'speed': 0
            }
            try: # windows???
                eth['name'] = name.decode('gbk')
            except:
                eth['name'] = name
            if name in stats:
                eth['status'] = 'Active' if int(stats[name].isup) else 'Inactive'
                eth['speed'] = stats[name].speed
            for entry in entries:
                if entry.family == psutil.AF_LINK:
                    eth['mac'] = entry.address.upper()
                elif entry.family == socket.AF_INET:
                    if eth['ip']:# ??????ip????????????
                        data.append(copy.deepcopy(eth))
                    eth['ip'] = entry.address
                    eth['mask'] = entry.netmask
                    eth['broadcast'] = entry.broadcast
                else: # ????IPV6
                    continue
            data.append(eth)
        # ???????????????mac?????00:00:00:00:00:00????????????":"
        for item in data:
            # ??????
            if ':' not in item['name']:
                continue
            # ???mac?????????????????????":"????
            if item['mac'] != '00:00:00:00:00:00':
                continue
            name = item['name'].rsplit(':', 1)[0]
            for iitem in data:
                if name == iitem['name']:
                    item['mac'] = iitem['mac']
                    break
        data.sort(key=lambda x: x['name'])
        return data
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号