2017-03-18 68 views
-5

那么我想检查Linux中的100000k + url。检查10000K +网址

关于那些链接,这些实际上是我的android的OTA [zip]。

在这些链接中只有一个有效的链接休息给404错误。

那么如何在linux服务器或web服务器[apache]中检查更少时间段内的所有链接。网址

结构:

http://link.com/updateOTA_1.zip

http://link.com/updateOTA_2.zip

http://link.com/updateOTA_999999999.zip

好吧是我的尝试

我做了这个脚本,但它真的很慢。 http://pastebin.com/KVxnzttA我也增加了螺纹高达500,然后我的服务器崩溃:

#!/bin/bash 
for a in {1487054155500..1487055000000} 
do 
    if [ $((a%50)) = 0 ] 
    then 
    curl -s -I http://link.com/updateOTA_$((a)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+1)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+2)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+3)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+4)).zip | head -n1 & 
... 
    curl -s -I http://link.com/updateOTA_$((a+49)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+50)).zip | head -n1 
    wait 
    echo "$((a))" 
    fi 
done 

我试着用aria2,但aria2最高线是16,所以再次失败。

尝试一些在线工具,但他们给我100url的限制。

+1

你尝试过这么远吗? –

+0

为什么人们给出负数..... – TonyStark

+0

@TomUdding我试过aria2c – TonyStark

回答

1

正在运行curl 100,000+次会变慢。而是将批量URL写入curl的单个实例,以减少启动curl的开销。

# This loop doesn't require pre-generating a list of a million integers 
for ((a=1487054155500; a<=1487055000000; a+=50)); do 
    for(k=0; k<50; k++)); do 
    printf 'url = %s\n' "http://link.com/updateOTA_$((a+k)).zip" 
    done | curl -I -K - -w 'result: %{http_code} %{url_effective}' | grep -F 'result:' > batch-$a.txt 
done 

-w选项用于产生输出每个URL其结果相关联地,你应该希望如此。

+0

谢谢。获取2错误>>警告:错误尝试从'-w'文件读配置 >> curl:(6)无法解析主机:结果 – TonyStark

+0

啊,小错字;我忘记了'-K'的'-'参数来告诉它使用哪个配置文件(标准输入)。 – chepner

+0

'curl:unknown --write-out变量:'http_status''仍然出错 – TonyStark

0

但是我发现解决方案使用aria2c

现在扫描每分钟7K网址。

感谢所有

aria2c -i url -s16 -x16 --max-concurrent-downloads=1000