查询设备的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('\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/网关的更多相关文章
- C# 判断 当前设备的IP地址、默认网关、子网掩码在不在同一网段内
要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网. 例:假定选择了子网掩码255.255.254.0 ...
- IP 地址与MAC硬件地址
IP 地址与MAC硬件地址 我们都知道数据通信要使用IP地址加MAC地址,两个地址缺一不可,下为原理图: 1.下面介绍计算机A与计算机B通信的过程 交换机基于数据帧的MAC地址转发数据帧,路由器基于数 ...
- IP地址,子网掩码,默认网关,路由,形象生动阐述
自己的Linux虚拟机已经分配了固定的IP地址(使用无线路由,用的是192.168.1.XX网段),公司的无线网络分配的IP地址是(10.51.174.XX网段) 所以当自己的电脑拿到公司,还想使用桥 ...
- 了解 IP 地址,默认网关,子网掩码,DNS 的概念和作用。
DNS(Domain Name System):域名解析服务器,在 Internet 上域名与 IP 地址一一对应,域名便于人记忆,但是机器只认识 IP 地址,他们之间的转换工作称为 ‘域名解析’,域 ...
- Linux基础二(修改ip地址、修改网关、修改DNS服务器、重新启动网络配置)
网络的初始化 .ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 netmask 子网掩码 [root@localhost /]# ifconfig eth1 ...
- IP地址和MAC地址绑定的必要性
计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...
- IP地址 子网掩码 默认网关 网络地址 广播地址
“IP地址”是“TCP/IP”(Transmite Control Protocol 传输控制协议/Internet Protocol网际协议)里其中的一种协议. Internet之所以能将广阔范围内 ...
- 为什么同时需要IP地址和MAC地址
每个以太网设备在出厂时都有一个唯一的MAC地址,为什么还需要为每台主机再分配一个IP地址?或者说每台主机都分配唯一的IP地址,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC ...
- [转]IP地址-子网掩码-默认网关
IP地址:是给每个连接在Internet上的主机分配的一个32bit地址.地址有两部分组成,一部分为网络地址,另一部分为主机地址.IP地址分为A.B.C.D.E 5类.常用的是B和C两类.网络地址的位 ...
随机推荐
- 【SqlServer】SqlServer中的计算列
计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值.比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值, ...
- Hadoop记录-Ganglia监控HDFS和HBase指标说明
HDFS相关 datanode相关 参数 解释 dfs.datanode.blockChecksumOp_avg_time 块校验平均时间 dfs.datanode.blockChecksumOp_n ...
- CNPM
cnpm 代替 npm npm install -g cnpm --registry=https://registry.npm.taobao.org Reference 淘宝 NPM 镜像
- [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】
概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...
- POJ - 2096 Collecting Bugs(概率dp)
https://vjudge.net/problem/POJ-2096 题意 一个软件有s个子系统,会产生n种bug.某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中.求找到所有的 ...
- 【Unity3d游戏开发】Unity中的Time.timeScale
马三最近在做一款游戏的时候涉及到了“加速”和“暂停”这两个功能,我第一时间就想到了应该用 Time.timeScale.当暂停的时候,设置timeScale = 0,当需要加速的时候,将 timeSc ...
- row_number()over()使用
语法: ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause ) 通过语法可以看出 o ...
- Vector集合
Vector集合也是List接口的一个实现类,但是它是同步的,这就意味着是单线程的,速度比较慢,被ArrayList集合所取代了(PS:为什么我现在也还不知道,先记录了)
- Retrofit GreenDao开发中遇到的坑
持续更新中1.使用@FormUrlEncoded的话,服务端需要使用Request.Form,如果不使用@FormUrlEncoded本地需要由 @FieldMap Map<String, Ob ...
- 【四】Ribbon负载均衡
1.概述1.1.是什么 Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端负载均衡的工具. 简单的说, Ribbon是Netflix发布的开源项目,主要功能是提 ...