天天看點

擷取各個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,如需轉載請自行聯系原作者

繼續閱讀