Exemplo n.º 1
0
    def task(self, req, threadname):
        if len(req) > 2:

            startip = str(req[0])
            stopip = str(req[1])
            taskid = req[2].get('taskid', '')
            taskport = req[2].get('taskport', '')
            isjob = req[2].get('isjob', '0')
            username = req[2].get('username', '')
            command = req[2].get('command', '')
            status = req[2].get('status', '')
            mode = req[2].get('mode', '2')
            if command == 'create':
                if mode == 1:
                    self.getIplist(startip, stopip, taskid, taskport, isjob,
                                   username, command, status)
                else:

                    jobs, count, pagecount = jobcontrol.jobshow(groupid=taskid)
                    if count > 0:
                        ip = jobs[0].getJobaddress()

                        print '当前数据库读到最后一次的任务是:' + ip
                        if self.iprange(
                                ip, stopip
                        ) < 0 or ip == stopip:  #or self.iprange(ip, startip)>0 or ip==startip
                            print '该任务之前已经创建无需重复创建'

                        else:
                            startipnum = self.ip2num(ip)
                            startipnum = startipnum + 1
                            ip = self.num2ip(startipnum)
                            self.getIplist(ip, stopip, taskid, taskport, isjob,
                                           username, command, status)

                    else:
                        self.getIplist(startip, stopip, taskid, taskport,
                                       isjob, username, command, status)

                pass
            elif command == 'work':
                if mode == 1:
                    self.getIplist(startip, stopip, taskid, taskport, isjob,
                                   username, command, status)
                elif mode == 0:

                    jobs, count, pagecount = jobcontrol.jobshow(groupid=taskid,
                                                                jobstatus='5')
                    if count > 0:
                        ip = jobs[0].getJobaddress()

                        print '当前数据库读到最后一次已完成的任务是:' + ip
                        if self.iprange(
                                ip, stopip
                        ) < 0 or ip == stopip:  # or self.iprange(ip, startip)>0 or ip==startip
                            print '该任务之前已经创建无需重复创建'

                        else:
                            print '恢复启动任务'
                            startipnum = self.ip2num(ip)
                            startipnum = startipnum + 1
                            ip = self.num2ip(startipnum)
                            print ip, stopip
                            self.getIplist(ip, stopip, taskid, taskport, isjob,
                                           username, command, status)

                    else:

                        self.getIplist(startip, stopip, taskid, taskport,
                                       isjob, username, command, status)

                else:
                    portarray, count, pagecount = portcontrol.portshow(
                        order='timesearch desc')
                    if count > 0:
                        ip = portarray[0].getIP()
                        print '当前数据库读到最后一次ip:' + ip
                        startip = ip
                    print 'start task from %s to %s' % (startip, stopip)
                    self.getIplist(startip, stopip, taskid, taskport, isjob,
                                   username, command, status)

        ans = ''
        print threadname + '执行任务中' + str(datetime.datetime.now())
        return ans
Exemplo n.º 2
0
    def getIplist(self,startip,endip,taskid,taskport,isjob,username,command,status):
        ip_list = []

        res = ()
        res = self.iprange(startip,endip)
        if res < 0:
            print 'endip must be bigger than startone'
            return 
        else:
            jobs=[]
            ipsize=int(res[2])+1
            insertdata = []
            for x in xrange(ipsize):
                startipnum = self.ip2num(startip)
                startipnum = startipnum + x
                ip=self.num2ip(startipnum)


                if isjob == '0':
                    ajob = job.Job(jobaddress=str(ip), jobport='', forcesearch='0', isjob='0')
                else:
                    if command=='create':
                        ajob = job.Job(jobname=taskid, jobaddress=str(ip), username=username, groupsid=taskid,
                                   jobport=taskport, isjob='1')
                    else:
                        jobitems, count, pagecount= jobcontrol.jobshow(jobname=taskid,username=username,groupid=taskid,jobaddress=str(ip))
                        ajob = jobitems[0]



                if command=='create':
                    
                    insertdata.append((username, ajob.getJobid(), ajob.getJobname(), ajob.getPriority(), ajob.getStatus(),
                            ajob.getJobaddress(),ajob.getPort(),ajob.getCreatetime(),ajob.getForcesearch(),ajob.getGroupsid()
                            ))


                    if len(jobs) == 10 or x == ipsize - 1:
                        sqldatawprk = []
                        dic = {"table": self.config.tasktable,
                               "select_params": ['username', 'taskid', 'taskname', 'taskprior', 'taskstatus',
                                                 'taskaddress', 'taskport', 'createtime', 'forcesearch', 'groupsid'],
                               "insert_values": insertdata}
                        tempwprk = Sqldata.SqlData('inserttableinfo_byparams', dic)
                        sqldatawprk.append(tempwprk)
                        self.sqlTool.add_work(sqldatawprk)
                        sqldatawprk = []
                        insertdata=[]
                        pass
                elif command=='work':
                    self.getlocationtool.add_work([str(ip)])
                    jobs.append(ajob)



                    # updatedata = []
                    # dic = {
                    #     "table": [self.config.tasktable],
                    #     "select_params": ['taskstatus'],
                    #     "set_params": [status],
                    #     "request_params": ['groupsid'],
                    #     "equal_params": [taskid]
                    # }
                    # updateitem = Sqldata.SqlData('updatetableinfo_byparams', dic)
                    # updatedata.append(updateitem)
                    # self.sqlTool.add_work(updatedata)
                    if status=='3' or isjob=='0':
                        if len(jobs)==10 or x==ipsize-1:


                            tasktotally=taskcontrol.getObject()
                 
                            tasktotally.add_work(jobs)


                            jobs=[]
                        else:
                            pass

            setvalue="(select count(*) from taskdata where groupsid='"+str(taskid)+"')"
            dic = {
                "table": [self.config.taskstable],
                "select_params": ['num'],
                "set_params": [setvalue],
                "request_params": ['tasksid'],
                "equal_params": ['\''+str(taskid)+'\'']
            }
            updateitem = Sqldata.SqlData('updatetableinfo_byparams', dic)
            updatedata = []
            updatedata.append(updateitem)
            self.sqlTool.add_work(updatedata)
Exemplo n.º 3
0
    def getIplist(self, startip, endip, taskid, taskport, isjob, username,
                  command, status):
        ip_list = []

        res = ()
        res = self.iprange(startip, endip)
        if res < 0:
            print 'endip must be bigger than startone'
            return
        else:
            jobs = []
            ipsize = int(res[2]) + 1
            insertdata = []
            for x in xrange(ipsize):
                startipnum = self.ip2num(startip)
                startipnum = startipnum + x
                ip = self.num2ip(startipnum)

                if isjob == '0':
                    ajob = job.Job(jobaddress=str(ip),
                                   jobport='',
                                   forcesearch='0',
                                   isjob='0')
                else:
                    if command == 'create':
                        ajob = job.Job(jobname=taskid,
                                       jobaddress=str(ip),
                                       username=username,
                                       groupsid=taskid,
                                       jobport=taskport,
                                       isjob='1')
                    else:
                        jobitems, count, pagecount = jobcontrol.jobshow(
                            jobname=taskid,
                            username=username,
                            groupid=taskid,
                            jobaddress=str(ip))
                        ajob = jobitems[0]
                        print ajob.getJobid()

                if command == 'create':

                    insertdata.append(
                        (username, ajob.getJobid(), ajob.getJobname(),
                         ajob.getPriority(), ajob.getStatus(),
                         ajob.getJobaddress(), ajob.getPort(),
                         ajob.getCreatetime(), ajob.getForcesearch(),
                         ajob.getGroupsid()))

                    while True:
                        if self.sqlTool.get_length() > 500:
                            time.sleep(30)
                        else:
                            break
                    if len(insertdata) == 10 or x == ipsize - 1:
                        sqldatawprk = []
                        dic = {
                            "table":
                            self.config.tasktable,
                            "select_params": [
                                'username', 'taskid', 'taskname', 'taskprior',
                                'taskstatus', 'taskaddress', 'taskport',
                                'createtime', 'forcesearch', 'groupsid'
                            ],
                            "insert_values":
                            insertdata
                        }
                        tempwprk = Sqldata.SqlData('inserttableinfo_byparams',
                                                   dic)
                        sqldatawprk.append(tempwprk)
                        self.sqlTool.add_work(sqldatawprk)
                        sqldatawprk = []
                        insertdata = []
                        pass
                elif command == 'work':
                    tasktotally = taskcontrol.getObject()
                    self.getlocationtool.add_work([str(ip)])
                    jobs.append(ajob)
                    while True:
                        if tasktotally.get_length() > 50:
                            time.sleep(60 * 5)
                        else:
                            break

                    # updatedata = []
                    # dic = {
                    #     "table": [self.config.tasktable],
                    #     "select_params": ['taskstatus'],
                    #     "set_params": [status],
                    #     "request_params": ['groupsid'],
                    #     "equal_params": [taskid]
                    # }
                    # updateitem = Sqldata.SqlData('updatetableinfo_byparams', dic)
                    # updatedata.append(updateitem)
                    # self.sqlTool.add_work(updatedata)
                    if status == '3' or isjob == '0':
                        if len(jobs) == 10 or x == ipsize - 1:

                            tasktotally.add_work(jobs)

                            jobs = []
                        else:
                            pass
            if isjob == '1':
                setvalue = "(select count(*) from taskdata where groupsid='" + str(
                    taskid) + "')"
                dic = {
                    "table": [self.config.taskstable],
                    "select_params": ['num'],
                    "set_params": [setvalue],
                    "request_params": ['tasksid'],
                    "equal_params": ['\'' + str(taskid) + '\'']
                }
                updateitem = Sqldata.SqlData('updatetableinfo_byparams', dic)
                updatedata = []
                updatedata.append(updateitem)
                self.sqlTool.add_work(updatedata)
Exemplo n.º 4
0
    def task(self,req,threadname):
        if len(req)>2:

            startip=str(req[0])
            stopip=str(req[1])
            taskid = req[2].get('taskid','')
            taskport = req[2].get('taskport','')
            isjob = req[2].get('isjob','0')
            username=req[2].get('username','')
            command=req[2].get('command','')
            status = req[2].get('status','')
            mode=req[2].get('mode','')
            if command=='create':
                if mode==1:
                    self.getIplist(startip, stopip, taskid, taskport, isjob, username, command, status)
                else:

                    jobs, count, pagecount=jobcontrol.jobshow(groupid=taskid)
                    if count>0:
                        ip=jobs[0].getJobaddress()

                        print '当前数据库读到最后一次的任务是:'+ip
                        if self.iprange(ip, stopip)<0 or ip==stopip :#or self.iprange(ip, startip)>0 or ip==startip
                            print '该任务之前已经创建无需重复创建'

                        else:
                            startipnum = self.ip2num(ip)
                            startipnum = startipnum + 1
                            ip = self.num2ip(startipnum)
                            self.getIplist(ip, stopip, taskid, taskport, isjob, username, command, status)

                    else:
                        self.getIplist(startip, stopip, taskid, taskport, isjob, username, command, status)


                pass
            elif command=='work':
                if mode == 1:
                    self.getIplist(startip, stopip, taskid, taskport, isjob, username, command, status)
                else:



                    jobs, count, pagecount = jobcontrol.jobshow(groupid=taskid,jobstatus='5')
                    if count > 0:
                        ip = jobs[0].getJobaddress()

                        print '当前数据库读到最后一次已完成的任务是:' + ip
                        if self.iprange(ip,
                                        stopip) < 0 or ip == stopip:  # or self.iprange(ip, startip)>0 or ip==startip
                            print '该任务之前已经创建无需重复创建'

                        else:
                            print '恢复启动任务'
                            startipnum = self.ip2num(ip)
                            startipnum = startipnum + 1
                            ip = self.num2ip(startipnum)
                            print ip,stopip
                            self.getIplist(ip, stopip, taskid, taskport, isjob, username, command, status)

                    else:
                        self.getIplist(startip, stopip, taskid, taskport, isjob, username, command, status)

                pass


        ans=''
        print threadname+'执行任务中'+str(datetime.datetime.now())
        return ans