IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python脚本用于检查一个ip是否属于此网段 -> 正文阅读

[网络协议]python脚本用于检查一个ip是否属于此网段

class IP_check(object):
    def make_ip(self,ip):
        """
        输入一个ip地址,将对应的ip地址转化为一个32位的二进制
        """
        ipbin=''
        ip_A=str(ip).split(".")
        for i in  ip_A:
            A=bin(int(i))
            ip_a=A[2:]#字符串除去前面的0b进行
            #print(ip_a)
            while len(str(ip_a))<8:
                #保证每一位都为8位
                a='0'
                ip_a=a+ip_a
            ipbin+=ip_a
        return ipbin
    def make_mask(self,mask):
        """
        输入一个1-32的整数或者类似于255.255.255.0的掩码,返回一个32位的2进制序列
        """
        if len(mask)<=2:
            make_list = []
            for i in range(32):
                #创建一个32全是0的空列表,输入的整数含有多少1,就在列表变为多少1
                make_list.append(0)
            for i in range(0,int(mask)):
                make_list[i]=1
            make_list=str(make_list)
            print(make_list)
            make_deal=(make_list.replace(", ",""))[1:-1]
        elif 32>=len(mask)!=1:
            make_deal=self.make_ip(mask)
        return make_deal
    def ip_check(self,ip,network):
        """
        输入一个ip,输入一个类似2.1.1.1/32的网络段,判断ip是否在这个网段内
        """
        make_network=network.split("/")
        network_ip=int(self.make_ip(make_network[0]),2)
        network_mask=int(self.make_mask(make_network[1]),2)
        Ip = int(self.make_ip(ip),2)
        #转为int数字,自动会将字符串前面的0去掉,导致保留位不到32,int(xx,2)表示一个字符串只存在0,1转化为10进制
        if network_ip & network_mask == Ip & network_mask:
            print("YES")
            return True
        else:
            print("NO")
            return False

if __name__ == "__main__":
    ip_1=IP_check()
    ip_1.ip_check(ip="23.2.1.1",network="23.1.1.1/255.255.0.0")


  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:59:52  更:2022-03-10 23:01:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:33:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码