免费注册 查看新帖 |

Chinaunix

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

用PING测试代理服务器的SHELL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-02 13:18 |只看该作者 |倒序浏览
用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、对剩余的按照返回时间排序


详细清单如下:

  1. #!/bin/bash
  2. # Author: net_robber

  3. # ROW of IP and Port in the File
  4. ROW_IP=2
  5. ROW_Port=3

  6. # How many times to test
  7. Ping_Time=5
  8. >proxy;
  9. >tmp.proxy.1;
  10. >tmp.proxy.2;

  11. echo test connected state: > proxy;

  12. for Line in $(seq $(cat $1 |wc -l ) )
  13. do
  14.   Data=$(cat $1 |sed -n ${Line}p);
  15.   Addr=$(echo $Data |awk "{print \$$ROW_IP}") ;
  16.   Port=$(echo $Data |awk "{print \$$ROW_Port}") ;

  17.   Ping=$(ping -c $Ping_Time $Addr);
  18.   count=$(echo $Ping | wc -w );
  19.   Temp1=$( expr $count - 4 ); # a certain string stand in a certain place
  20.   Temp2=$( expr $count - 1 ); # time tral place
  21.   Temp3=$( expr $count - 9 ); # lost range

  22.   Online=$( echo $Ping | awk "{print \$$Temp1 }" );
  23.   Time=$( echo $Ping | awk "{print \$$Temp2}"|awk -F/ '{print $2}' );
  24.   Lost=$( echo $Ping | awk "{print \$$Temp3}" );

  25.   if [ $Online == rtt ] ;
  26.   then
  27.     echo -e "$Line: $Addr:$Port\t$Lost Lost in ${Time}ms " >> proxy ;
  28.   else
  29.     echo -e "$Line: $Addr\tCan't Be Connected!" >> proxy ;
  30.   fi
  31. done

  32. cat proxy | grep -w "Lost in" > tmp.proxy.1
  33. >tmp.proxy.2;

  34. for Line in $(seq $(cat tmp.proxy.1 |wc -l ) )
  35. do
  36.   result=$(cat tmp.proxy.1 |sed -n ${Line}p)
  37.   isLost=$( echo $result |awk '{print $3}' )
  38.   if [ $isLost == 0% ] ;
  39.     then
  40.     echo $result | awk '{print $6" \t"$2}' >> tmp.proxy.2
  41.   fi
  42. done

  43. Date=$(date +%Y_%m_%d)
  44. cat tmp.proxy.2 | sort -n -k 1 |cat -n > GoodProxy.$Date

  45. 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 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
寂寞烈火 + 2 原创内容

查看全部评分

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-06-03 02:21 |只看该作者
不错~~~

论坛徽章:
0
3 [报告]
发表于 2007-06-03 11:09 |只看该作者
学校的网关禁用ping命令的说

论坛徽章:
0
4 [报告]
发表于 2007-06-03 13:30 |只看该作者
原帖由 zanefei 于 2007-6-3 11:09 发表
学校的网关禁用ping命令的说

那可以用其他办法,比如用nc探测某个端口

因为代理服务器除了IP还有端口也要同时公布。

还是用那个思路,应该可以完成。

我还没有做,呵呵

论坛徽章:
1
射手座
日期:2013-09-30 15:24:05
5 [报告]
发表于 2007-06-03 18:20 |只看该作者
不错学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP