制定ip池内随机生成ip地址
static char *get_ip(const char *ip_pool, char value[])
{
char ip_addr[+] = {};
unsigned mask = 0x0;
sscanf(ip_pool, "%[^/]/%d", ip_addr, &mask);
long long ip_l = htonl(inet_addr(ip_addr));
for (unsigned i = -mask; i < ; i++)
mask = mask | ( << i); long long min_ip_l = ip_l & (mask & 0xffffffff);
long long max_ip_l = ip_l | (~mask & 0xffffffff);
ip_l = min_ip_l + rand()%(max_ip_l-min_ip_l+); struct in_addr addr;
addr.s_addr = ntohl(ip_l);
strcpy(value, inet_ntoa(addr));
return value;
}
# RANDOM_IP_POOL=['192.168.10.222/24']
RANDOM_IP_POOL=['180.3.11.0/24']
def __get_random_ip():
str_ip = RANDOM_IP_POOL[random.randint(0,len(RANDOM_IP_POOL) - 1)]
str_ip_addr = str_ip.split('/')[0]
str_ip_mask = str_ip.split('/')[1]
ip_addr = struct.unpack('>I',socket.inet_aton(str_ip_addr))[0]
mask = 0x0
for i in range(31, 31 - int(str_ip_mask), -1):
mask = mask | ( 1 << i)
ip_addr_min = ip_addr & (mask & 0xffffffff)
ip_addr_max = ip_addr | (~mask & 0xffffffff)
return socket.inet_ntoa(struct.pack('>I', random.randint(ip_addr_min, ip_addr_max)))
# 网络字节序到主机字节序的转换
def ip2num(ip):
ip = [int(x) for x in ip.split('.')]
return ip[0] << 24 | ip[1] << 16 | ip[2] << 8 | ip[3] def num2ip(num):
return '%s.%s.%s.%s' % (
(num & 0xff000000) >> 24,
(num & 0x00ff0000) >> 16,
(num & 0x0000ff00) >> 8,
(num & 0x000000ff
)
)
def gen_ips(start, end):
"""生成IP地址"""
# if num & 0xff 过滤掉 最后一段为 0 的IP
return [num2ip(num) for num in range(start, end + 1) if num & 0xff]
制定ip池内随机生成ip地址的更多相关文章
- php 随机生成ip
#随机生成IP 中国区 function randip(){ $ip_1 = -1; $ip_2 = -1; $ip_3 = rand(0,255); $ip_4 = rand(0,255); $ip ...
- 转:在0~N(不包括N)范围内随机生成一个长度为M(M <= N)且内容不重复的数组
1. 最朴素暴力的做法. void cal1() { , j = , num = ; int result[M]; result[] = rand() % N; //第一个肯定不重复, 直接加进去 ; ...
- python爬虫——建立IP池,将可用IP存放到redis
直接上代码,每行代码后面都有注释 import urllib.request import urllib import re import time import random import sock ...
- C#在一段数字区间内随机生成若干个互不相同的随机数
/// <summary> /// Random ra=new Random(); 系统自动选取当前时前作随机种子: /// Random ra=new Ra ...
- kernel随机生成MAC地址的接口
/** * eth_random_addr - Generate software assigned random Ethernet address * @addr: Pointer to a si ...
- Java 实现在固定区间内随机生成整数
1.random.nextInt(num) public static void main(String args[]) { Random rdom = new Random(); int max = ...
- php随机生成国内ip地址
获得一个国家所有ip段,随机生成国内ip地址的缩水实现.注意: $ip_long数组中后5个值在64位系统中可能是错误的(下面代码中 $ip_long 数组的后五个值在32位系统中为负数,64位系 ...
- uboot生成随机的MAC地址
转载:http://blog.chinaunix.net/uid-25885064-id-3303132.html 在使用U-boot时,有个问题就是MAC地址的设置,如果MAC地址相同的两块开发板在 ...
- Python爬虫 | IP池的使用
一.简介 - 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问.所以我们需 ...
随机推荐
- python_字符串_常用处理
1. 输出原序列的反向互补序列 in1 = open("brca1.fasta", "r") out1 = open("re_brca1.fasta& ...
- python正则表达式02--findall()和search()方法区别,group()方法
import re st = 'asxxixxsaefxxlovexxsdwdxxyouxxde' #search()和 findall()的区别 a = re.search('xx(.*?)xxsa ...
- 15.2,redis发布订阅
发布publish 订阅subscribe Redis 通过 PUBLISH . SUBSCRIBE 等命令实现了订阅与发布模式. 举例1: qq群的公告,单个发布者,多个收听者 发布/订阅 实验 发 ...
- Hibernate---开发环境搭建
下载安装Hibernate 在官网http://hibernate.org/tools/上下载eclipse安装插件的文件/安装插件的地址.点击download选择JBoss Tools,选择Arti ...
- centos使用--rpm和yum的关系以及基本用法
1 RPM包 RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的"添加/删除程序" rpm 执行安装包 二进制包(Binar ...
- script async和defer
1.没有async和defer,html解析时遇到script标签,会先去下载js文件,文件加载完成立即执行,执行完了再开始解析后面的html,是一个顺序流的过程 2.async,加载和渲染后续文档元 ...
- CS局域网射击
2/3D游戏:3D 辅助插件:角色控制器 游戏制作难度系数:中级 用到的其他工具:network 一.解决由于子弹射击速度过快而无法打到物体的问题 //方法一: ; Vector3 originalP ...
- 使用dib element proliant-tools制作deploy image
element proliant-tools会在ipa ramdisk中安装一个rpm包hpssacli(HP的RAID管理工具),和一个python module proliantutils(里面P ...
- OZ常见错误解决办法
执行成功 错误信息解决办法 libvirt.libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No ...
- scrapy图片-爬取哈利波特壁纸
话不多说,直接开始,直接放上整个程序过程 1.创建工程和生成spiders就不用说了,会用scrapy的都知道. 2.items.py class HarryItem(scrapy.Item): # ...