slqt
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(\'\n\')

        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地址/网关\', \'\n\n\'.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(\'\n\')
            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地址/网关\', \'\n\n\'.join(result), 0)
    return report

reports = report_format(platform.node(), [get_net_info()], is_json=True)

  

posted on 2018-11-20 15:43  slqt  阅读(1146)  评论(0编辑  收藏  举报

分类:

技术点:

相关文章: