免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4863 | 回复: 17
打印 上一主题 下一主题

求脚本(给定IP地址和位数,遍历出可用IP地址) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-12 19:55 |只看该作者 |倒序浏览
需要一段function,用于根据给定的IP地址和位数,返回可用的IP地址,例如:
传递参数为192.168.1.0/24,能够得到数组a,a里面是192.168.1.1-192.168.1.254
192.168.1.128/25,得到的是数组a是192.168.1.129-192.168.1.254


请广大awk高手不吝赐教

论坛徽章:
0
2 [报告]
发表于 2010-03-12 20:21 |只看该作者
看不懂。那个数组a是不是要输出的东西?

如果原来就有数据,那么初始值是192.168.1.X。其中x=1~254么?

要求得到的最后结果又是什么?

论坛徽章:
1
巨蟹座
日期:2014-06-04 13:33:30
3 [报告]
发表于 2010-03-12 20:30 |只看该作者
perl

论坛徽章:
0
4 [报告]
发表于 2010-03-12 21:07 |只看该作者
$ cat ip.pl
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::CIDR::Set;

  4. my $cidr = shift || die "$0 x.x.x.x/x\n";
  5. my $set = Net::CIDR::Set->new($cidr);
  6. print $set->as_range_array(2),"\n";
复制代码
$ perl ip.pl 192.168.1.0/24
192.168.1.0-192.168.1.255

论坛徽章:
0
5 [报告]
发表于 2010-03-12 22:00 |只看该作者
Net::CIDR::Set---是不是需要手动安装一个库?如何查询得到这个库的名字?

论坛徽章:
0
6 [报告]
发表于 2010-03-13 09:21 |只看该作者
看不懂。那个数组a是不是要输出的东西?

如果原来就有数据,那么初始值是192.168.1.X。其中x=1~254么?
...
laohuanggua 发表于 2010-03-12 20:21



   不好意思,我没说清楚
比如我求的脚本是function getip(ip)
那么我在bash中使用getip(192.168.1.0/24),能给我返回一个数组a,这个数组a里面是(192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4......,192.168.1.254)这种的
使用getip(192.168.1.1/25),返回的数组a是(192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4......,192.168.1.126)
还请不吝赐教

论坛徽章:
0
7 [报告]
发表于 2010-03-13 09:22 |只看该作者
$ cat ip.pl$ perl ip.pl 192.168.1.0/24
192.168.1.0-192.168.1.255
兰花仙子 发表于 2010-03-12 21:07



    十分感谢您的回复,但是我对perl实在不熟,这边也没有perl的环境,实在不好意思,我求个bash shell吧
再次感谢您的赐教

论坛徽章:
0
8 [报告]
发表于 2010-03-13 09:54 |只看该作者
PERL的斑竹都来啦呵呵~ CUER都是热心肠啊~

论坛徽章:
0
9 [报告]
发表于 2010-03-13 11:45 |只看该作者
#!/bin/bash

ip=$1
NK=`echo $ip | awk -F\/ '{print $2}'`
IP_LAST=`echo $ip | awk -F\/ '{print $1}' | awk -F\. '{print $4}'`

if ($IP_LAST -le 12;then
        NUM=$(($((2**$((32-$NK))))-2))
else
        NUM=254
fi

for i in `seq $(($IP_LAST+1)) $NUM`
    do
        echo 192.168.1.$i
    done

将输出赋值给数组,但是这只针对c网的,对子网划分,知道的不多。

论坛徽章:
0
10 [报告]
发表于 2010-03-13 12:45 |只看该作者
cpan
> install Net::CIDR::Set

perl坏境还是很好用的..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP