用PING测试代理服务器的SHELL
Test Proxy Server use ping with Shell
我们可以从网上得到的代理服务器列表可能是这个样子:
1 189.32.6.158 6588 HTTP
2 193.167.187.188 3127 HTTP
3 219.93.178.162 3128 HTTP
4 219.93.182.99 3128 HTTP
5 128.151.65.101 3124 HTTP
6 128.151.65.101 3128 HTTP
7 142.150.238.13 3128 HTTP
8 201-34-32-44.pvoce301.ipd.brasiltelecom.net.br 3128 HTTP
9 pl1.unm.edu 3128 HTTP
10 160.94.220.242 3124 HTTP
...
1000 122.23.42.4 3128 HTTP
我们如何知道他们速度如何??
使用Shell,判断一个代理服务器是否可用。
简单的办法,就是ping一下。
现在我们用Shell对得到的结果进行整理。
思路如下:
1、从Proxy列表文件中取出 IP 和 Port
2、ping IP 得到返回数据
3、判断是否通
4、删除不通的
5、删除有丢包的
6、对剩余的按照返回时间排序
详细清单如下:
- #!/bin/bash
- # Author: net_robber
- # ROW of IP and Port in the File
- ROW_IP=2
- ROW_Port=3
- # How many times to test
- Ping_Time=5
- >proxy;
- >tmp.proxy.1;
- >tmp.proxy.2;
- echo test connected state: > proxy;
- for Line in $(seq $(cat $1 |wc -l ) )
- do
- Data=$(cat $1 |sed -n ${Line}p);
- Addr=$(echo $Data |awk "{print \$$ROW_IP}") ;
- Port=$(echo $Data |awk "{print \$$ROW_Port}") ;
- Ping=$(ping -c $Ping_Time $Addr);
- count=$(echo $Ping | wc -w );
- Temp1=$( expr $count - 4 ); # a certain string stand in a certain place
- Temp2=$( expr $count - 1 ); # time tral place
- Temp3=$( expr $count - 9 ); # lost range
- Online=$( echo $Ping | awk "{print \$$Temp1 }" );
- Time=$( echo $Ping | awk "{print \$$Temp2}"|awk -F/ '{print $2}' );
- Lost=$( echo $Ping | awk "{print \$$Temp3}" );
- if [ $Online == rtt ] ;
- then
- echo -e "$Line: $Addr:$Port\t$Lost Lost in ${Time}ms " >> proxy ;
- else
- echo -e "$Line: $Addr\tCan't Be Connected!" >> proxy ;
- fi
- done
- cat proxy | grep -w "Lost in" > tmp.proxy.1
- >tmp.proxy.2;
- for Line in $(seq $(cat tmp.proxy.1 |wc -l ) )
- do
- result=$(cat tmp.proxy.1 |sed -n ${Line}p)
- isLost=$( echo $result |awk '{print $3}' )
- if [ $isLost == 0% ] ;
- then
- echo $result | awk '{print $6" \t"$2}' >> tmp.proxy.2
- fi
- done
- Date=$(date +%Y_%m_%d)
- cat tmp.proxy.2 | sort -n -k 1 |cat -n > GoodProxy.$Date
- rm tmp.proxy.* proxy -f
复制代码
这里有个彩色的版本:
http://www.timectrl.net/Tech/Blog/2007-05/test_proxy_use_ping.htm
如果觉得复杂,还有一个之实现了一部分功能的相对简单的版本:
http://www.timectrl.net/Tech/Blog/2007-05/ping_host.htm
[ 本帖最后由 net_robber 于 2007-6-2 13:20 编辑 ] |