iKuai爱快流控路由

标题: 基于物理网卡的多拨不成功啊~~~~~ [打印本页]

作者: bean2582004    时间: 2014-5-13 11:07
标题: 基于物理网卡的多拨不成功啊~~~~~
本帖最后由 bean2582004 于 2014-5-13 11:09 编辑

有用过论坛上这个脚本多拨成功的兄弟么?
  1. # -*- coding: UTF-8 -*-
  2. '''
  3. author : lycecom#gmail.com  
  4. date : 2013-11-01  
  5. 为 ikuai 软路由编写的多拨脚本
  6. 适用于基于物理网卡的一号 一卡/多卡 多拨
  7. '''
  8. import threading
  9. import time,urllib,urllib2,sys,cookielib


  10. ip = "192.168.1.1:8000" #你自己的ikuai路由内网WEB管理地址
  11. user = "root" #修改为你自己的管理员名
  12. passwd = "XXX" #修改为自己的密码
  13. wans = 1 #物理网卡数
  14. vids = 2 #每物理网卡多拨数
  15. g_func_list = []
  16. cj = cookielib.CookieJar()

  17. def login():
  18.     i = 0
  19.     while True and i<10: #为防止开机后DHCP未能及时分配地址此处进行了多次尝试登录,i为重试次数,每次重试间隔20秒
  20.         req = urllib2.Request("http://%s/cgi-bin/logProcess.php"%ip)
  21.         data = urllib.urlencode({'username':user,'password':passwd})
  22.         opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  23.         urllib2.install_opener(opener)
  24.         try:
  25.             response = opener.open(req, data,timeout=3)
  26.         except urllib2.URLError, e:
  27.             time.sleep(20)
  28.             i+=1
  29.             continue
  30.         else:
  31.             break

  32. def loopMe(): #多卡
  33.     for i in range(wans):
  34.         for n in range(1,vids+1):
  35.             vid = i*vids+n
  36.             req = urllib2.Request("http://%s/cgi-bin/wanSetProcess.php?old_internet=MAC_VLAN&interface=wan%s&vid_ty=%s"%(ip,i+1,vid))
  37.             urllib2.urlopen(req,timeout=3)
  38.             print "wan%s vid%s was closed %s"%(i+1,vid,time.time())
  39.             g_func_list.append({"func":dial,"args":(i+1,vid)})


  40. def dial(wan,vid):
  41.    req = urllib2.Request("http://%s/cgi-bin/wanSetProcess.php?old_internet=MAC_VLAN&interface=wan%s&vid_qy=%s"%(ip,wan,vid))
  42.    urllib2.urlopen(req,timeout=3)
  43.    print "starting up wan%s vid%s time:%s\n"%(wan,vid,time.time())
  44.    #content = urllib2.urlopen(req).read()
  45.    #type = sys.getfilesystemencoding()
  46.    #print content.decode("UTF-8").encode(type)

  47. class MyThread(object):
  48.     def __init__(self, func_list=None):
  49.     #所有线程函数的返回值汇总,如果最后为0,说明全部成功
  50.         self.ret_flag = 0
  51.         self.func_list = func_list
  52.         self.threads = []
  53.          
  54.     def set_thread_func_list(self, func_list):
  55.         """
  56.         @note: func_list是一个list,每个元素是一个dict,有func和args两个参数
  57.         """
  58.         self.func_list = func_list
  59.   
  60.     def start(self):
  61.         """
  62.         @note: 启动多线程执行,并阻塞到结束
  63.         """
  64.         self.threads = []
  65.         self.ret_flag = 0
  66.         for func_dict in self.func_list:
  67.             if func_dict["args"]:
  68.                 t = threading.Thread(target=func_dict["func"], args=func_dict["args"])
  69.             else:
  70.                 t = threading.Thread(target=func_dict["func"])
  71.             self.threads.append(t)
  72.   
  73.         for thread_obj in self.threads:
  74.             thread_obj.start()
  75.   
  76.         for thread_obj in self.threads:
  77.             thread_obj.join()
  78.   
  79.     def ret_value(self):
  80.         """
  81.         @note: 所有线程函数的返回值之和,如果为0那么表示所有函数执行成功
  82.         """
  83.         return self.ret_flag


  84. login()
  85. mt = MyThread()
  86. mt.set_thread_func_list(g_func_list)
  87. loopMe()
  88. time.sleep(5)
  89. mt.start()
复制代码




作者: 安多福    时间: 2014-7-8 22:17
爱快的物理网卡多拨?就是和爱快粉丝开了一个玩笑
作者: 爱快技术支持05    时间: 2014-7-9 10:43
多拨需要运营商支持才可以的。




欢迎光临 iKuai爱快流控路由 (https://bbs.ikuai8.com/) Powered by Discuz! X3.3