查询设备的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两类.网络地址的位 ...
随机推荐
- Java Web服务收到请求时线程的情况
Web请求线程的状态 在开发中,突然想到了这样的一个问题, Java对每一次Web的请求,是否都会创建一条线程去进行处理呢?也就是说,当一个Class的方法同时有1000个请求访问时,线程是如何运作的 ...
- PL/SQL Developer连接本地Oracle 11g 64位数据库和快捷键设置
1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...
- CrawlSpiders模块的使用
创建文件模板 scrapy genspider -t crawl tencent tencent.com CrawlSpiders就是为爬取整站孕育而生的,我们以前是分页下一页,然后再yied.这样太 ...
- python遇到的知识点
python遇到的知识点,记录一下.方便学习. 文件相关操作 查了资料,关于open()的mode参数: 'r':读 'w':写 'a':追加 'r+' == r+w(可读可写,文件若不存在就报错(I ...
- H5新属性FileReader实现选择图片后立即显示在页面上
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2018牛客网暑期ACM多校训练营(第九场)A -Circulant Matrix(FWT)
分析 大佬说看样例就像和卷积有关. 把题目化简成a*x=b,这是个xor的FWT. FWT的讲解请看:https://www.cnblogs.com/cjyyb/p/9065615.html 那么要求 ...
- 2018牛客网暑期ACM多校训练营(第三场)C Shuffle Cards(可持久化平衡树/splay)
题意 牌面初始是1到n,进行m次洗牌,每次抽取一段放到最前面.求最后的序列. 分析 神操作!!!比赛时很绝望,splay技能尚未点亮,不知道怎么用. 殊不知,C++库里有rope神器,即块状链表. 基 ...
- [Android] Sqlite 数据库操作 工具封装类
sqlite 数据库封装类 DatabaseUtil.java(封装的类) package com.jack.androidbase.tools; import android.content.Con ...
- Struts2的初级应用
做一个登录注册 1.把Struts2框架的必须包导入到项目中(http://struts.apache.org/) 2.web.xml <?xml version="1.0" ...
- Spring MVC整合Mybatis 入门
本文记录使用Intellij创建Maven Web工程搭建Spring MVC + Mybatis 的一个非常简单的示例.关于Mybatis的入门使用可参考这篇文章,本文在该文的基础上,引入了Spri ...