zoukankan      html  css  js  c++  java
  • 查询设备的IP地址/掩码/MAC/网关

    import commands, sys
    import platform
    from _utils.patrol2 import run_cmd, data_format, report_format
    from psutil import net_if_addrs
    import os
    import uuid
    
    
    def get_net_info():
        sysstr = platform.system()
        if (sysstr == "Windows"):
            results = []
            code, gateway = run_cmd("chcp 437| ipconfig /all")
            print gateway
            if code:
                return data_format('网卡IP/掩码/MAC地址/网关', '数据获取异常', 1)
            else:
                flag = 0
                for i in gateway.split(os.linesep):
                    if flag == 1 and (':' not in i or '.' not in i.split(':')[0]) and i:
                        results.append(i.strip())
                    else:
                        flag = 0
                    if 'Default Gateway' in i:
                        flag = 1
                    if flag == 1 and i:
                        results.append(i)
            result = []
            for i in results:
                if '.' in i.split(':')[1]:
                    result.append(i.split(':')[1].strip())
            gateway=','.join(result)
    
            address = hex(uuid.getnode())[2:]
            mac_host = '-'.join(address[i:i + 2] for i in range(0, len(address), 2))
    
            code, ipnets = run_cmd('chcp 437| ipconfig /all')
            if code:
                return data_format('网卡IP/掩码/MAC地址/网关', ipnets, 1)
            else:
                ipnets = ipnets.split('
    ')
    
            result = []
            ips = []
            for k, v in net_if_addrs().items():
                mac = ''
                ip = ''
                mask = ''
                for item in v:
                    if item.family == -1:
                        mac = item.address
                    elif item.family == 2:
                        ip = item.address
                        mask = item.netmask
    
                    if not mac:
                        mac = mac_host
                    if ip and ip != '127.0.0.1' and ip not in ips:
                        flag=0
                        for i in ipnets:
                            if 'IPv4' in i.split(':')[0]:
                                flag=1
                            if flag==1 and ('子网掩码' in i or 'Subnet Mask' in i):
                                flag=0
                                mask=i.split(':')[1].strip()
    
                        ips.append(ip)
                        result.append('{}/{}/{}/{}'.format(ip, mask, mac,gateway))
            report = data_format('网卡IP/掩码/MAC地址/网关', '
    
    '.join(result), 0)
        else:
            address = hex(uuid.getnode())[2:]
            mac_host = '-'.join(address[i:i + 2] for i in range(0, len(address), 2))
    
            if os.uname()[0] != 'Linux':
                code, ipnets = run_cmd('Lang=C;ifconfig -a')
                if code:
                    return data_format('网卡IP/掩码/MAC地址/网关', ipnets, 1)
                else:
                    ipnets = ipnets.split('
    ')
                code, gateway = run_cmd("Lang=C;netstat -rn|grep default| awk '{ print $2}'")
                if code:
                    return data_format('网卡IP/掩码/MAC地址/网关', gateway, 1)
            else:
                code, gateway = run_cmd("Lang=C;ip route show | grep '^default' | awk '{ print $3}'")
                if code:
                    return data_format('网卡IP/掩码/MAC地址/网关', gateway, 1)
    
            result = []
            ips = []
            for k, v in net_if_addrs().items():
                mac = ''
                ip = ''
                mask = ''
                for item in v:
                    if item.family == -1:
                        mac = item.address
                    elif item.family == 2:
                        ip = item.address
                        mask = item.netmask
    
                    if not mac:
                        mac = mac_host
                    if ip != '127.0.0.1' and ip not in ips:
                        if os.uname()[0] != 'Linux':
                            for i in ipnets:
                                if ip in i:
                                    mask = i.split('netmask')[1].split()[0].strip()
                                    c = str(bin(int(mask, 16))[2:])
                                    mask = '{}.{}.{}.{}'.format(int(c[0:8], 2), int(c[9:17], 2),
                                                                int(c[18:26], 2), int(c[27:35], 2))
    
                        ips.append(ip)
                        result.append('{}/{}/{}/{}'.format(ip, mask, mac,gateway))
            report = data_format('网卡IP/掩码/MAC地址/网关', '
    
    '.join(result), 0)
        return report
    
    reports = report_format(platform.node(), [get_net_info()], is_json=True)
    

      

  • 相关阅读:
    思维导图github地址
    python操作mongodb根据_id查询数据的实现方法
    如何让nginx显示文件夹目录
    Scrapy爬虫返回302重定向问题解决方法
    K8s
    Dockerfile文件详解
    k8s简介
    mongodb存储过程
    存储过程详解
    Docker 镜像加速
  • 原文地址:https://www.cnblogs.com/slqt/p/9989343.html
Copyright © 2011-2022 走看看