查询设备的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两类.网络地址的位 ...
随机推荐
- Hbase balancer RSgroup shell 脚本
#!/bin/bashTMP_FILE=tmp_groupsGROUPS_FILE=groups.txtecho "list_groups" | hbase shell > ...
- cookies、sessionStorage和localStorage解释及区别
在浏览器查看 HTML4的本地存储 cookie 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和sessio ...
- js异步下载文件请求
注意 :通常下载文件是用get请求 window.location.href=url; 但是 我们需要下载完成监听,所以必须要异步执行.用常规的ajax是不可以的.我们要用blob对象来实现1.原生的 ...
- Sqlserver中的触发器
一 什么是触发器 1.1 触发器的概念 触发器(trigger)是SQL server来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行是由事件来触发,当对一个表进行操作( ...
- Js点击按钮下载文件到本地(兼容多浏览器)
实现点击 用纯 js(非jquery) 下载文件到本地 自己尝试,加网上找了好久未果,如: window.open(url) location.href=url form表单提交 ifr ...
- mac怎么快速回到桌面 隐藏所有窗口
当你同时按下Option+Command+h键,就能把所有已打开的程序窗口(不包括当前正在运行的应用程序窗口)最小化到Dock栏上.注意不是关闭哦,是最小化哦.如果需要把程序窗口恢复到屏幕上,直接点击 ...
- vs2013 配置支持https的libcurl
需求:在vs2013上配置支持https协议的libcurl. 环境:win7(64位),vs2013 一.安装openssl: 需要先安装nasm和ActivePerl. nasm需要手动配置环境变 ...
- tcp_listen函数
#include <netdb.h> #include <unistd.h> #include <stddef.h> #include <strings.h& ...
- [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
[本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] Question 例题3-4 猜数字游戏的提示(Master-Mind Hints,UVa340) 实现一个 ...
- 集成JUnit测试错误java.lang.IllegalStateException: Failed to load ApplicationContext
1 详细错误信息 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.t ...