标题已经很复杂了
6v上下东西直接挂代理行不通,隧道弄了一下午没弄好,miredo也没弄好 囧………
情况就略了,说起来太复杂了。今天弄了弄总算可以在实验室上下6v的东西了
可恶的吉大……
环境是寝室:路由+服务器
服务器:ubuntu 12.04 + squid + lighttpd +transmission
路由器开放 3128 给服务器的squid,9090开给transmission的RPC
客户端:python + transmissionrpc库
代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- import transmissionrpc import sys import base64 import time import os address = '49.140.X.X' port = '9090' username = 'admin' password = 'admin888' download = 'axel -n20 --alternate' remote_url = 'http://49.140.X.X/Downloads/' storage_dir = '/home/fuckjlu/Downloads/' if len(sys.argv) != 2: print 'Usage: %s [Torrent file path/list/TorrentID from remote host]' % sys.argv[0] sys.exit(1) torrent_file = sys.argv[1] try: int(torrent_file) has_id = True except: has_id = False print '[*] Connecting to Transmission Server ...' rpc = transmissionrpc.Client(address=address,port=port,user=username,password=password) print '[*] Adding torrent' if sys.argv[1] == 'list': print 'Torrents in remote host:' for i in rpc.get_torrents(): print i.id,i.name sys.exit(0) if has_id == False: torrent = open(torrent_file).read() torrent = base64.b64encode(torrent) state = rpc.add_torrent(torrent) torrent_id = state.id print 'Torrent id from remote host:',torrent_id else: try: state = rpc.get_torrent(sys.argv[1]) except: print '[*] Torrent with specified id not exists in remote host' print 'Torrents in remote host:' for i in rpc.get_torrents(): print i.id,i.name sys.exit(1) torrent_id = state.id print 'Starting task:',state.name while True: state = rpc.get_torrent(torrent_id) progress = state.progress if progress == 100: break print 'progress',progress,'%' time.sleep(10) print 'Finished.' for i in state.files().values(): if os.path.basename(i['name']) != i: # if it has a subfolder path = os.path.join(storage_dir,os.path.dirname(i['name'])) path = path.encode('utf8') if not os.path.exists(path): os.system('mkdir -p "%s"' % path) else: path = storage_dir path = path.encode('utf8') final_path = path + '/' + os.path.basename(i['name'].encode('utf8')) print 'Downloading',i['name'],'\n' os.system('%s "%s" -o "%s"' % (download,(remote_url + i['name']).encode('utf8'),final_path)) if not has_id: print 'Removing files from remote host ...' rpc.remove_torrent(torrent_id,delete_data=True) print 'Done'