天天看点

获取各个ISP运营商IP地址修正版[菜鸟级]

<code>#!/bin/bash</code>

<code>#getip</code>

<code>#connect wy.cn</code>

<code>FILE=delegated-apnic-latest</code>

<code>if</code> <code>[ ! -f $FILE ];</code><code>then</code>

<code>        </code><code>wget http:</code><code>//ftp</code><code>.apnic.net</code><code>/apnic/stats/apnic/delegated-apnic-latest</code>

<code>fi</code>

<code>grep</code> <code>"apnic|CN|ipv4"</code> <code>$FILE | </code><code>awk</code> <code>-F </code><code>"|"</code> <code>'{print $4,$5}'</code> <code>&gt; IP.txt</code>

<code>AB=`</code><code>cat</code> <code>IP.txt | </code><code>wc</code> <code>-l`</code>

<code>pow=32</code>

<code>i=1</code>

<code>while</code><code>(($i&lt;=$AB));</code><code>do</code>

<code>        </code><code>IP=`</code><code>sed</code> <code>-n ${i}p IP.txt | </code><code>awk</code> <code>'{print $1}'</code><code>`</code>

<code>        </code><code>HOST=`</code><code>sed</code> <code>-n ${i}p IP.txt | </code><code>awk</code> <code>'{print $2}'</code><code>`</code>

<code>        </code><code>ERHOST=`</code><code>echo</code> <code>"obase=2;$HOST"</code> <code>| </code><code>bc</code><code>`</code>

<code>        </code><code>HOSTL=`</code><code>echo</code> <code>${</code><code>#ERHOST}`</code>

<code>        </code><code>let</code> <code>BU=$pow-$HOSTL</code>

<code>        </code><code>ZQIAN=</code><code>"11111111111111111111111111111111"</code>

<code>        </code><code>QIAN=`</code><code>echo</code> <code>${ZQIAN:0:$BU}`</code>

<code>        </code><code>MASK=`</code><code>echo</code> <code>$QIAN$ERHOST`</code>

<code>        </code><code>STRA=`</code><code>echo</code> <code>${MASK:0:8}`</code>

<code>        </code><code>STRB=`</code><code>echo</code> <code>${MASK:8:8}`</code>

<code>        </code><code>STRC=`</code><code>echo</code> <code>${MASK:16:8}`</code>

<code>        </code><code>STRD=`</code><code>echo</code> <code>${MASK:24:8}`</code>

<code>        </code><code>MASKA=`</code><code>echo</code> <code>"ibase=2;$STRA"</code> <code>| </code><code>bc</code><code>`</code>

<code>        </code><code>MASKB=`</code><code>echo</code> <code>"ibase=2;$STRB"</code> <code>| </code><code>bc</code><code>`</code>

<code>        </code><code>MASKC=`</code><code>echo</code> <code>"ibase=2;$STRC"</code> <code>| </code><code>bc</code><code>`</code>

<code>        </code><code>MASKD=`</code><code>echo</code> <code>"ibase=2;$STRD"</code> <code>| </code><code>bc</code><code>`</code>

<code>        </code><code>NETMASK=`</code><code>echo</code> <code>$MASKA.$MASKB.$MASKC.$MASKD`</code>

<code>        </code><code>BIT=`</code><code>echo</code> <code>$MASK | </code><code>grep</code> <code>-o </code><code>'1'</code> <code>| </code><code>wc</code> <code>-l`</code>

<code>        </code><code>NET=`whois -h whois.apnic.net $IP | </code><code>grep</code> <code>"mnt-by"</code><code>`</code>

<code>        </code><code>NUM_A=`</code><code>echo</code> <code>$NET | </code><code>grep</code> <code>'CHINA'</code> <code>| </code><code>wc</code> <code>-l`</code>

<code>        </code><code>NUM_B=`</code><code>echo</code> <code>$NET | </code><code>grep</code> <code>'CNCGROUP'</code> <code>| </code><code>wc</code> <code>-l`</code>

<code>        </code><code>NUM_C=`</code><code>echo</code> <code>$NET | </code><code>grep</code> <code>'CERNET'</code> <code>| </code><code>wc</code> <code>-l`</code>

<code>        </code><code>NUM_D=`</code><code>echo</code> <code>$NET | </code><code>grep</code> <code>'CMCC'</code> <code>| </code><code>wc</code> <code>-l`</code>

<code>        </code><code>if</code><code>(($NUM_A&gt;0));</code><code>then</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK ................CHINATELECOM</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK &gt;&gt; CHINATELECOM.TXT</code>

<code>                </code><code>let</code> <code>i++</code>

<code>                </code><code>continue</code>

<code>        </code><code>fi</code>

<code>        </code><code>if</code><code>(($NUM_B&gt;0));</code><code>then</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK ................CNCGROUP</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK &gt;&gt; CNCGROUP.TXT</code>

<code>        </code><code>if</code><code>(($NUM_C&gt;0));</code><code>then</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK ................CERNET</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK &gt;&gt; CERNET.TXT</code>

<code>        </code><code>if</code><code>(($NUM_D&gt;0));</code><code>then</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK ................CMCC</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK &gt;&gt; CMCC.TXT</code>

<code>        </code><code>let</code> <code>res=$NUM_A+$NUM_B+$NUM_C+$NUM_D</code>

<code>        </code><code>if</code><code>(($res==0));</code><code>then</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK ................OTHER</code>

<code>                </code><code>echo</code> <code>$IP/$NETMASK &gt;&gt; OTHER.TXT</code>

<code>done</code>

<code>rm</code> <code>-rf IP.txt $FILE</code>

得到IP地址文件分类如下

CERNET.TXT  CHINATELECOM.TXT  CMCC.TXT  CNCGROUP.TXT  OTHER.TXT  getip

CERNET.TXT是教育网

CHINATELECOM.TXT是中国电信

CMCC.TXT是中国移动

CNCGROUP是中国联通

OTHER.TXT是其他的 大部分是CNNIC分配的IP地址

getip是脚本文件名

如果找不到whois命令  从如下地址下载安装

http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz

      本文转自flyingzf  51CTO博客,原文链接:http://blog.51cto.com/flyingzf/1331191,如需转载请自行联系原作者

继续阅读