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)

  

查询设备的IP地址/掩码/MAC/网关的更多相关文章

  1. C# 判断 当前设备的IP地址、默认网关、子网掩码在不在同一网段内

    要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网. 例:假定选择了子网掩码255.255.254.0 ...

  2. IP 地址与MAC硬件地址

    IP 地址与MAC硬件地址 我们都知道数据通信要使用IP地址加MAC地址,两个地址缺一不可,下为原理图: 1.下面介绍计算机A与计算机B通信的过程 交换机基于数据帧的MAC地址转发数据帧,路由器基于数 ...

  3. IP地址,子网掩码,默认网关,路由,形象生动阐述

    自己的Linux虚拟机已经分配了固定的IP地址(使用无线路由,用的是192.168.1.XX网段),公司的无线网络分配的IP地址是(10.51.174.XX网段) 所以当自己的电脑拿到公司,还想使用桥 ...

  4. 了解 IP 地址,默认网关,子网掩码,DNS 的概念和作用。

    DNS(Domain Name System):域名解析服务器,在 Internet 上域名与 IP 地址一一对应,域名便于人记忆,但是机器只认识 IP 地址,他们之间的转换工作称为 ‘域名解析’,域 ...

  5. Linux基础二(修改ip地址、修改网关、修改DNS服务器、重新启动网络配置)

    网络的初始化 .ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 netmask 子网掩码 [root@localhost /]# ifconfig eth1 ...

  6. IP地址和MAC地址绑定的必要性

    计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...

  7. IP地址 子网掩码 默认网关 网络地址 广播地址

    “IP地址”是“TCP/IP”(Transmite Control Protocol 传输控制协议/Internet Protocol网际协议)里其中的一种协议. Internet之所以能将广阔范围内 ...

  8. 为什么同时需要IP地址和MAC地址

    每个以太网设备在出厂时都有一个唯一的MAC地址,为什么还需要为每台主机再分配一个IP地址?或者说每台主机都分配唯一的IP地址,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC ...

  9. [转]IP地址-子网掩码-默认网关

    IP地址:是给每个连接在Internet上的主机分配的一个32bit地址.地址有两部分组成,一部分为网络地址,另一部分为主机地址.IP地址分为A.B.C.D.E 5类.常用的是B和C两类.网络地址的位 ...

随机推荐

  1. zookeeper的搭建和简单的使用

    一.什么是zookeeper,有什么用 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据 ...

  2. MyBatis-resultType 几种返回类型

    一.返回集合 1.返回JavaBean集合 public List<MyUser> selectMyUserByNameLike(String name); <!-- resultT ...

  3. 常见排序算法之python实现

    冒泡排序 简介 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交 ...

  4. python中\r的意义及用法

    \r的意义 \r 表示将光标的位置回退到本行的开头位置 \b表示将光标的位置回退一位 在python里print会默认进行换行,可以通过修改参数让其不换行 (1) python2中可以在print语句 ...

  5. 2018年度 35 个最好用 Vue 开源库

    在本文中,我们将推荐一些非常好用的 Vue 相关的开源项目.无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠 ...

  6. bean的实例化方式

    spring中bean的实例化方式有三种,1.构造器实例化,2.实例工厂实例化,3.静态工厂实例化 1.构造器实例化方式 public class bean1 { public bean1() { } ...

  7. Python 数据分析1

    本节概要 基础环境 ipython基础 前言 这是18年的第一篇blog,因为boss对于我的工作上的一些期望,需要着手做一些数据分析的工作,所以开始撰写这个系列的blog.分类的内的主要内容基本都是 ...

  8. Python 17 web框架&Django

    本节内容 1.html里面的正则表达式 2.web样式简介 3.Django创建工程 Html里的正则表达式 test 用来判断字符串是否符合规定的正则       rep.test('....')  ...

  9. mysql 架构 ~ MHA 总揽

    一 简介:MHA相关二 版本 mha0.56 mha0.57 mha0.58三 切换流程   0 主库已不可达   阶段一      1 从集群选出新主,根据新主同步的binlog信息进行拷贝binl ...

  10. python - 字符编码/格式化/替换符