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)