Categories
木有技术

搭建自己的openwrt小镜像服务器

虽然当我写完的时候我发现wget可以一句话解决这个事情,不过还是与大家分享下代码吧~
更简单的方法详见:http://zqhong.qiniudn.com/2014/10/18/%E6%90%AD%E5%BB%BAOpenWrt%E6%9C%AC%E5%9C%B0%E8%BD%AF%E4%BB%B6%E5%BA%93%E9%95%9C%E5%83%8F/
下面是我写的小爬虫,是在其他人的成果基础上改的,新增支持级联目录
 

#!/usr/bin/env python
#coding=utf-8
#
# Openwrt Package Grabber
#
# Copyright (C) 2015 http://boweihe.me
# based on http://shuyz.com
#
import urllib2
import os
import re
def fetch_package(url, subdir=''):
    print 'fetching package list from ' + url
    content = urllib2.urlopen(url, timeout=15).read()
    pattern = r'<a href="(.*?)">'
    items = re.findall(pattern, content)
    for item in items:
        if item=='../':
            continue
        else:
            m = re.match(r'\w+/$', item)
            if m:
                if not os.path.exists(savedir + subdir + m.group()):
                    print 'makedir ' + m.group()
                    os.makedirs(savedir + subdir + m.group())
                fetch_package(url + m.group(), subdir + m.group())
            else:
                print 'downloading item : '+ item
                rfile = urllib2.urlopen(url + item)
                opendir = savedir + subdir + item
                with open(opendir, 'wb') as code:
                    code.write(rfile.read())
# the url of package list page, end with "/"
baseurl = 'http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/'
# which directory to save all the packages, end with "/"
savedir = './download-full1407/'
if not os.path.exists(savedir):
    os.makedirs(savedir)
fetch_package(baseurl)
print 'done!'

 

2 replies on “搭建自己的openwrt小镜像服务器”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.