使用 shell从 apnic 获取中国 IP 段

先抄一段 copy 过来的 shell代码

#!/bin/bash
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
FILE=delegated-apnic-latest
grep "apnic|CN|ipv4" $FILE | awk -F "|" '{print $4,$5}' > IP.txt
AB=`cat IP.txt | wc -l`
pow=32
i=1
while(($i<=$AB));do
        IP=`sed -n ${i}p IP.txt | awk '{print $1}'`
        HOST=`sed -n ${i}p IP.txt | awk '{print $2}'`
        ERHOST=`echo "obase=2;$HOST" | bc`
        HOSTL=`echo ${#ERHOST}`
        let BU=$pow-$HOSTL
        ZQIAN="11111111111111111111111111111111"
        QIAN=`echo ${ZQIAN:0:$BU}`
        MASK=`echo $QIAN$ERHOST`
        STRA=`echo ${MASK:0:8}`
        STRB=`echo ${MASK:8:8}`
        STRC=`echo ${MASK:16:8}`
        STRD=`echo ${MASK:24:8}`
        MASKA=`echo "ibase=2;$STRA" | bc`
        MASKB=`echo "ibase=2;$STRB" | bc`
        MASKC=`echo "ibase=2;$STRC" | bc`
        MASKD=`echo "ibase=2;$STRD" | bc`
        NETMASK=`echo $MASKA.$MASKB.$MASKC.$MASKD`
        BIT=`echo $MASK | grep -o '1' | wc -l`
        echo $IP/$NETMASK
        echo $IP/$NETMASK >> IP.SH
        let i++
done
rm -rf IP.txt $FILE

测试了下发现脚本并不好使,修改了下

#!/bin/bash
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
FILE=delegated-apnic-latest
grep "apnic|CN|ipv4" $FILE | awk -F "|" '{print $4,$5}' > IP.txt
AB=`cat IP.txt | wc -l`
pow=32
i=1
while(($i<=$AB));do
        IP=`sed -n ${i}p IP.txt | awk '{print $1}'`
        HOST=`sed -n ${i}p IP.txt | awk '{print $2}'`
        HOSTL=`awk 'BEGIN{print log($HOST)/log(2)}'`
        let BU=$pow-$HOSTL
        echo $IP/$BU
        echo $IP/$BU >> IP.SH
        let i++
done
rm -rf IP.txt $FILE

记得debian下要使用chsh 命令把默认 shell 从 dash 改为 bash,不然会找不到 let
如果要修改为 IP 地址/子网掩码的形式,可以使用netmask命令

apt-get install netmask -y

一段小脚本

ips=`cat IP.SH`
for ip in $ips
do
netmask -s $ip >>test.txt
done
sed -i 's/^[[:space:]]*//' test.txt

Markdown 语法说明

NOTE: This is Simplelified Chinese Edition Document of Markdown Syntax. If you are seeking for English Edition Document. Please refer to Markdown: Syntax.

声明: 这份文档派生(fork)于繁体中文版,在此基础上进行了繁体转简体工作,并进行了适当的润色。此文档用 Markdown 语法编写,你可以到这里查看它的源文件。「繁体中文版的原始文件可以查看这里 。」--By @riku

注: 本项目托管于 [GitCafe][]上,请通过"派生"和"合并请求"来帮忙改进本项目。

Markdown 语法说明 (简体中文版) / (点击查看快速入门)

继续阅读→

Markdown 语法快速入门

声明: 这份文档派生(fork)于繁体中文版,在此基础上进行了繁体转简体工作,并进行了适当的润色。此文档用 Markdown 语法编写,你可以到这里查看它的源文件。「繁体中文版的原始文件可以查看这里」--By @riku

注: 本项目托管于 [GitCafe][]上,请通过"派生"和"合并请求"来帮忙改进本项目。

Markdown: Basics (快速入门) / (点击查看完整语法说明)

继续阅读→

Aria2——Unix 系统中潜行的下载神器

拥有了 Aria2 的默默扶持,再也不用待见不用忍受 OSX 下国内那些半死不活的下载工具了。

关于 Aria2
Aria2 是一个基于命令行的开源下载工具,支持多协议、多来源(Http/https、FTP、Magnet、BitTorrent 等)、多线程的下载。

主要优势如下:

高速,自动多线程下载;
断点续传;
轻量。占用内存非常少,通常情况平均 4~9MB 内存占用(官方介绍);
多平台。支援 Win/Linux/OSX/Android 等操作系统下的部署;
模块化。分段下载引擎,文件整合速度快;
支持 RPC 界面远程;
全面支持 BitTorrent 协议;

继续阅读→

利用 Mosh 改善 SSH

在高延迟的网络下,Mosh 比 SSH 流畅多了,而且3G网络下,丢失网络变更IP后,终端连接不会中断。

安装

brew install mobile-shell

注: Server, Client 都需要安裝 mosh 才可以。
服务器端

apt-get install mosh
yum install mosh

用法

经典用法

Mosh will log the user in via SSH, then start a connection on a UDP port between 60000 and 61000.

$ mosh chewbacca.norad.mil

Different username

$ mosh potus@ackbar.bls.gov

Server binary outside path

$ mosh --server=/tmp/mosh-server r2d2

Selecting Mosh UDP port

$ mosh -p 1234 darth

Selecting SSH port

$ mosh --ssh="ssh -p 2222" figrindan