示例#1
0
 def remotexmppmonitoring( xmppobject, data ):
     result = ""
     if data['data'] == "battery":
         result = decode_strconsole(sensors_battery())
     elif data['data'] == "winservices":
         result = decode_strconsole(winservices())
     elif data['data'] == "clone_ps_aux":
         result = decode_strconsole(clone_ps_aux())
     elif data['data'] == "disk_usage":
         result = decode_strconsole(disk_usage())
     elif data['data'] == "sensors_fans":
         result = decode_strconsole(sensors_fans())
     elif data['data'] == "mmemory":
         result = decode_strconsole(mmemory())
     elif data['data'] == "ifconfig":
         result = decode_strconsole(ifconfig())
     elif data['data'] == "cpu_num":
         result = decode_strconsole(cpu_num())
     elif data['data'] == "agentinfos":
         result = decode_strconsole(agentinfoversion(xmppobject))
     elif data['data'] == "netstat":
         result = decode_strconsole(netstat())
         result = re.sub("[ ]{2,}", "@", result)
     else:
         datastruct = json.loads(data['data'])
         if 'subaction' in datastruct:
             result = functionsynchroxmpp.__execfunctionmonitoringparameter(datastruct)
     result = base64.b64encode(zlib.compress(result, 9))
     data['result'] = result
     return json.dumps(data)
示例#2
0
 def remotexmppmonitoring(xmppobject, data):
     result = ""
     if data['data'] == "battery":
         result = decode_strconsole(sensors_battery())
     elif data['data'] == "winservices":
         result = decode_strconsole(winservices())
     elif data['data'] == "clone_ps_aux":
         result = decode_strconsole(clone_ps_aux())
     elif data['data'] == "disk_usage":
         result = decode_strconsole(disk_usage())
     elif data['data'] == "sensors_fans":
         result = decode_strconsole(sensors_fans())
     elif data['data'] == "mmemory":
         result = decode_strconsole(mmemory())
     elif data['data'] == "ifconfig":
         result = decode_strconsole(ifconfig())
     elif data['data'] == "cpu_num":
         result = decode_strconsole(cpu_num())
     elif data['data'] == "agentinfos":
         result = decode_strconsole(agentinfoversion(xmppobject))
     elif data['data'] == "netstat":
         result = decode_strconsole(netstat())
         result = re.sub("[ ]{2,}", "@", result)
     else:
         datastruct = json.loads(data['data'])
         if 'subaction' in datastruct:
             result = functionsynchroxmpp.__execfunctionmonitoringparameter(
                 datastruct)
     result = base64.b64encode(zlib.compress(result, 9))
     data['result'] = result
     return json.dumps(data)
示例#3
0
 def remotecommandshell(xmppobject, data):
     result = shellcommandtimeout(encode_strconsole(data['data']),
                                  timeout=data['timeout']).run()
     re = [
         decode_strconsole(x).strip(os.linesep) + "\n"
         for x in result['result']
     ]
     result['result'] = re
     return json.dumps(result)
示例#4
0
    def processcommand(self, command, queue_out_session, messagestr, timeout):
        logging.error("########processcommand")
        try:
            message = json.loads(decode_strconsole(messagestr))
        except:
            traceback.print_exc(file=sys.stdout)
            logging.getLogger().error("error json")
            sys.exit(0)
        try:
            #structure message for msgout
            msgoutsucces = {'eventMessageraw': message}
            logging.debug("================================================")
            logging.debug(" execution command in process")
            logging.debug("command : %s" % command)
            logging.debug("================================================")
            cmd = cmdx(command, timeout)
            msgoutsucces['eventMessageraw']['data'][
                'codeerror'] = cmd.code_error
            cmddecode = decode_strconsole(cmd.stdout)
            msgoutsucces['eventMessageraw']['data']['result'] = cmddecode
            logging.debug("code error  %s" % cmd.code_error)
            logging.debug(
                "msg succes to manager evenement: mode 'eventMessageraw'")
            queue_out_session.put(msgoutsucces)
            #logging.debug("code error  %s"% cmd.code_error)
            #logging.debug("result  %s"% cmd.stdout)
            logging.debug("================================================")

        except TimeoutError:
            logging.error("TimeoutError process  %s sessionid : %s" %
                          (command, message['sessionid']))
        except KeyboardInterrupt:
            logging.warn("KeyboardInterrupt process  %s sessionid : %s" %
                         (command, message['sessionid']))
            sys.exit(0)
        except:
            traceback.print_exc(file=sys.stdout)
            logging.error("error execution process %s sessionid : %s" %
                          (command, message['sessionid']))
            sys.exit(0)
示例#5
0
 def __execfunctionmonitoringparameter(data):
     result=""
     try:
         if  data['subaction'] == "cputimes":
             func = getattr(sys.modules[__name__], data['subaction'])
             result = decode_strconsole(json.dumps(func(*data['args'], **data['kwargs'])))
             return result
         else:
             return ""
     except Exception as e:
         print str(e)
         traceback.print_exc(file=sys.stdout)
         return ""
示例#6
0
 def __execfunctionmonitoringparameter(data):
     result = ""
     try:
         if data['subaction'] == "cputimes":
             func = getattr(sys.modules[__name__], data['subaction'])
             result = decode_strconsole(
                 json.dumps(func(*data['args'], **data['kwargs'])))
             return result
         else:
             return ""
     except Exception as e:
         print str(e)
         traceback.print_exc(file=sys.stdout)
         return ""
    def processcommand( self,  command , queue_out_session, messagestr, timeout):
        logging.error("########processcommand")
        try:
            message = json.loads(decode_strconsole(messagestr))
        except:
            traceback.print_exc(file=sys.stdout)
            logging.getLogger().error("error json")
            sys.exit(0)
        try:
            #structure message for msgout
            msgoutsucces = {
                        'eventMessageraw': message
            }
            logging.debug("================================================")
            logging.debug(" execution command in process")
            logging.debug("command : %s"%command)
            logging.debug("================================================")
            cmd = cmdx(command,timeout)
            msgoutsucces['eventMessageraw']['data']['codeerror'] = cmd.code_error
            cmddecode = decode_strconsole(cmd.stdout)
            msgoutsucces['eventMessageraw']['data']['result'] = cmddecode
            logging.debug("code error  %s"% cmd.code_error)
            logging.debug("msg succes to manager evenement: mode 'eventMessageraw'")
            queue_out_session.put(msgoutsucces)
            #logging.debug("code error  %s"% cmd.code_error)
            #logging.debug("result  %s"% cmd.stdout) 
            logging.debug("================================================")

        except TimeoutError:
            logging.error("TimeoutError process  %s sessionid : %s"%(command,message['sessionid']))
        except KeyboardInterrupt:
            logging.warn("KeyboardInterrupt process  %s sessionid : %s"%(command,message['sessionid']))
            sys.exit(0)
        except :
            traceback.print_exc(file=sys.stdout)
            logging.error("error execution process %s sessionid : %s"%(command,message['sessionid']))
            sys.exit(0)
    def run(self):
        self.proc = subprocess.Popen(self.cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        #kill_proc = lambda p: p.kill()
        timer = Timer(self.timeout, self.kill_proc, [self.proc])
        try:
            timer.start()
            stdout,stderr = self.proc.communicate()
        finally:
            timer.cancel()
        #self.stderr = stderr
        self.stdout = decode_strconsole(stdout)

        self.code_error = self.proc.returncode
        if self.timeoutbool:
            self.stdout = "error : timeout %s"%self.timeout
示例#9
0
    def run(self):
        self.proc = subprocess.Popen(self.cmd,
                                     shell=True,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.STDOUT)
        #kill_proc = lambda p: p.kill()
        timer = Timer(self.timeout, self.kill_proc, [self.proc])
        try:
            timer.start()
            stdout, stderr = self.proc.communicate()
        finally:
            timer.cancel()
        #self.stderr = stderr
        self.stdout = decode_strconsole(stdout)

        self.code_error = self.proc.returncode
        if self.timeoutbool:
            self.stdout = "error : timeout %s" % self.timeout
 def strjsontree(self):
     try:
         cont = file_get_content(os.path.join(os.environ["ProgramFiles"],"Pulse","tmp","treejson.json"))
         l = decode_strconsole(cont)
         return l
         #self.jsonfile = self.jsonfile.replace("/","\\");
         #self.jsonfile = self.jsonfile.replace("\\\\","\\");
         #self.jsonfile = self.jsonfile.replace("\"","");
         #if os.path.isfile(self.jsonfile):
             #cont = file_get_content(self.jsonfile)
             #l = decode_strconsole(cont)
             #return l
         #else:
             #self.createjsontree()
         #l = decode_strconsole(file_get_content(self.jsonfile))
         #return l
     except Exception as e:
         logger.error(traceback.format_exc())
         logger.error("strjsontree %s"%str(e))
     return  {}
示例#11
0
def processstepcommand ( command , queue_out_session, messagestr, timeout, step):
    try:
        message = json.loads(messagestr)
    except:
        traceback.print_exc(file=sys.stdout)
        logging.getLogger().error("error json")
        sys.exit(0)

    try:
        workingstep = {}
        #logging.debug("######MESSAGE#############\n%s"%json.dumps(message['data'], indent=4, sort_keys=True))
        sequence = message['data']['descriptor']['sequence']
        for i in sequence:
            if i['step'] == step:
                workingstep = i
                break
        ###
        if len (workingstep) != 0:
            #logging.debug("dddd###################\n#######################\n#######################\n#################")
            #logging.debug("######MESSAGE#############\n%s"%json.dumps(message, indent=4, sort_keys=True))
            #logging.debug("dddd###################\n#######################\n#######################\n#################")
            #structure message for msgout
            logging.getLogger().debug("================================================")
            logging.getLogger().debug(" execution command in process")
            logging.getLogger().debug("command : \n%s"%command)
            logging.getLogger().debug("================================================")
            cmd = cmdx(command, timeout)
            workingstep['codereturn'] = cmd.code_error
            message['data']['oldreturncode'] = str(cmd.code_error)
            workingstep['completed'] = 1
            cmddecode = decode_strconsole(cmd.stdout)
            result = cmddecode.split('\n')
            result  = [x.strip() for x in result if x !='']
            try:
                message['data']['oldresult'] = str(result[-1])
            except :
                message['data']['oldresult'] = ""
            for t in workingstep:
                if t == "@resultcommand":
                    workingstep[t] = os.linesep.join(result)
                elif t.endswith('lastlines'):
                    nb = t.split("@")
                    nb1 = -int(nb[0])
                    logging.getLogger().debug( "=======lastlines============%s========"%nb1)
                    tab = result[nb1:]
                    workingstep[t] = os.linesep.join(result)
                elif t.endswith('firstlines'):
                    nb = t.split("@")
                    nb1 = int(nb[0])
                    logging.getLogger().debug( "=======firstlines============%s======="%nb1)
                    tab = result[:nb1]
                    workingstep[t] = os.linesep.join(result)
            if 'goto' in workingstep:
                message['data']['stepcurrent'] = workingstep['goto']
            elif 'success' in workingstep and  workingstep['codereturn'] == 0:
                message['data']['stepcurrent'] = workingstep['success']
            elif 'error' in workingstep and  workingstep['codereturn'] != 0:
                message['data']['stepcurrent'] = workingstep['error']
            else :
                message['data']['stepcurrent'] = message['data']['stepcurrent'] + 1

            logging.getLogger().debug("Next Step : %s"%message['data']['stepcurrent'])
            msgoutsucces = {
                        'eventMessageraw': message
            }

            msgoutsucces['eventMessageraw']['data']['codeerror'] = cmd.code_error
            queue_out_session.put(msgoutsucces)
        else:
            logging.getLogger().debug("######MESSAGE error#############\n%s"%json.dumps(message, indent=4, sort_keys=True))

    except TimeoutError:
        logging.getLogger().error("TimeoutError process  %s sessionid : %s"%(command,message['sessionid']))
    except KeyboardInterrupt:
        logging.getLogger().warn("KeyboardInterrupt process  %s sessionid : %s"%(command,message['sessionid']))
        sys.exit(0)
    except :
        traceback.print_exc(file=sys.stdout)
        logging.getLogger().error("error execution process %s sessionid : %s"%(command,message['sessionid']))
        sys.exit(0)
示例#12
0
    def processcommand( self,  command , queue_out_session, sessionid, eventstart, eventfinish, eventerror, timeout, keysdescriptor):
        #il y a 2 types de messages event ceux de la boucle interne et ceux envoyé en TEVENT
        try:
            #structure message for msgout
            msgout = {
                        'event': "",
                        'sessionid': sessionid,
                        'result' : { 'codeerror' : 0, 'resultcommand' : '','command' : command },
            }
            if eventstart != False:
                #ecrit dans queue_out_session l'evenement eventstart
                if '_eventype' in eventstart and '_eventype' == 'TEVENT':
                    msgout['event'] = eventstart
                    queue_out_session.put(msgout)
                else:
                    queue_out_session.put(eventstart)
            cmd = cmdx(command,timeout)
            cmddecode = decode_strconsole(cmd.stdout)
            if cmd.code_error == 0 and eventfinish != False:
                ev = eventfinish
            elif cmd.code_error != 0 and eventfinish != False:
                ev = eventerror
            else:
                ev = False

            print "================================================"
            print " execution command in process"
            print "================================================"
            print cmd.code_error
            print cmddecode
            print "================================================"

            if ev != False:
                if '_eventype' in ev and '_eventype' == 'TEVENT':
                    #ecrit dans queue_out_session le TEVENT
                    msgout['event'] = ev
                    #msgout['result']['resultcommand'] = cmd['result']
                    msgout['result']['resultcommand'] = cmddecode
                    msgout['result']['codeerror'] = cmd.code_error
                    queue_out_session.put(msgout)
                else:

                    #"10@firstlines" : "",
                    #"10@lastlines": "",
                    #"@resultcommand":""

                    #ev['data']['result'] = {'codeerror': cmd['code'],'resultcommand' : cmd['result'],'command' : command  }
                    ev['data']['result'] = {'codeerror': cmd.code_error,'command' : command  }
                    for t in keysdescriptor:
                        if t == 'codeerror' or t=='command': 
                            pass
                        elif t == '@resultcommand' :
                            ev['data']['result']['@resultcommand'] = cmd.stdout
                        elif  t.endswith('lastlines'):
                            nb = t.split("@")
                            nb1 = -int(nb[0])
                            tab = [x for x in cmd.stdout.split(os.linesep) if x !='']
                            tab = tab[nb1:]
                            ev['data']['result'][t] = os.linesep.join(tab)
                        elif t.endswith('firstlines'):
                            nb = t.split("@")
                            nb1 = int(nb[0])
                            tab = [x for x in cmd.stdout.split(os.linesep) if x !='']
                            tab = tab[:nb1]
                            ev['data']['result'][t] = os.linesep.join(tab)
                    queue_out_session.put(ev)

            #cmd = simplecommandstr(command)

            #if cmd['code'] == 0 and eventfinish != False:
                #ev = eventfinish
            #elif cmd['code'] != 0 and eventfinish != False:
                #ev = eventerror
            #else:
                #ev = False

            #print "================================================"
            #print " execution command in process"
            #print "================================================"
            #print cmd['code']
            #print cmd['result']
            #print "================================================"

            #if ev != False:
                #if '_eventype' in ev and '_eventype' == 'TEVENT':
                    ##ecrit dans queue_out_session le TEVENT
                    #msgout['event'] = ev
                    #msgout['result']['resultcommand'] = cmd['result']
                    #msgout['result']['codeerror'] = cmd['code']
                    #queue_out_session.put(msgout)
                #else:
                    #ev['data']['result'] = {'codeerror': cmd['code'],'resultcommand' : cmd['result'],'command' : command  }
                    #queue_out_session.put(ev)

        except TimeoutError:
            logging.error("TimeoutError process  %s sessionid : %s"%(command,sessionid))
        except KeyboardInterrupt:
            logging.warn("KeyboardInterrupt process  %s sessionid : %s"%(command,sessionid))
            sys.exit(0)
        except :
            traceback.print_exc(file=sys.stdout)
            logging.error("error execution process %s sessionid : %s"%(command,sessionid))
            sys.exit(0)
示例#13
0
 def remotecommandshell( xmppobject, data ):
     result = shellcommandtimeout(encode_strconsole(data['data']), timeout=data['timeout']).run()
     re = [ decode_strconsole(x).strip(os.linesep)+"\n" for x in result['result'] ]
     result['result'] = re
     return json.dumps(result)
示例#14
0
def processstepcommand(command, queue_out_session, messagestr, timeout, step):
    try:
        message = json.loads(messagestr)
    except:
        traceback.print_exc(file=sys.stdout)
        logging.getLogger().error("error json")
        sys.exit(0)

    try:
        workingstep = {}
        #logging.debug("######MESSAGE#############\n%s"%json.dumps(message['data'], indent=4, sort_keys=True))
        sequence = message['data']['descriptor']['sequence']
        for i in sequence:
            if i['step'] == step:
                workingstep = i
                break
        ###
        if len(workingstep) != 0:
            #logging.debug("dddd###################\n#######################\n#######################\n#################")
            #logging.debug("######MESSAGE#############\n%s"%json.dumps(message, indent=4, sort_keys=True))
            #logging.debug("dddd###################\n#######################\n#######################\n#################")
            #structure message for msgout
            logging.getLogger().debug(
                "================================================")
            logging.getLogger().debug(" execution command in process")
            logging.getLogger().debug("command : \n%s" % command)
            logging.getLogger().debug(
                "================================================")
            cmd = cmdx(command, timeout)
            workingstep['codereturn'] = cmd.code_error
            message['data']['oldreturncode'] = str(cmd.code_error)
            workingstep['completed'] = 1
            cmddecode = decode_strconsole(cmd.stdout)
            result = cmddecode.split('\n')
            result = [x.strip() for x in result if x != '']
            try:
                message['data']['oldresult'] = str(result[-1])
            except:
                message['data']['oldresult'] = ""
            for t in workingstep:
                if t == "@resultcommand":
                    workingstep[t] = os.linesep.join(result)
                elif t.endswith('lastlines'):
                    nb = t.split("@")
                    nb1 = -int(nb[0])
                    logging.getLogger().debug(
                        "=======lastlines============%s========" % nb1)
                    tab = result[nb1:]
                    workingstep[t] = os.linesep.join(result)
                elif t.endswith('firstlines'):
                    nb = t.split("@")
                    nb1 = int(nb[0])
                    logging.getLogger().debug(
                        "=======firstlines============%s=======" % nb1)
                    tab = result[:nb1]
                    workingstep[t] = os.linesep.join(result)
            if 'goto' in workingstep:
                message['data']['stepcurrent'] = workingstep['goto']
            elif 'success' in workingstep and workingstep['codereturn'] == 0:
                message['data']['stepcurrent'] = workingstep['success']
            elif 'error' in workingstep and workingstep['codereturn'] != 0:
                message['data']['stepcurrent'] = workingstep['error']
            else:
                message['data'][
                    'stepcurrent'] = message['data']['stepcurrent'] + 1

            logging.getLogger().debug("Next Step : %s" %
                                      message['data']['stepcurrent'])
            msgoutsucces = {'eventMessageraw': message}

            msgoutsucces['eventMessageraw']['data'][
                'codeerror'] = cmd.code_error
            queue_out_session.put(msgoutsucces)
        else:
            logging.getLogger().debug(
                "######MESSAGE error#############\n%s" %
                json.dumps(message, indent=4, sort_keys=True))

    except TimeoutError:
        logging.getLogger().error("TimeoutError process  %s sessionid : %s" %
                                  (command, message['sessionid']))
    except KeyboardInterrupt:
        logging.getLogger().warn(
            "KeyboardInterrupt process  %s sessionid : %s" %
            (command, message['sessionid']))
        sys.exit(0)
    except:
        traceback.print_exc(file=sys.stdout)
        logging.getLogger().error("error execution process %s sessionid : %s" %
                                  (command, message['sessionid']))
        sys.exit(0)
示例#15
0
    def processcommand(self, command, queue_out_session, sessionid, eventstart,
                       eventfinish, eventerror, timeout, keysdescriptor):
        #il y a 2 types de messages event ceux de la boucle interne et ceux envoyé en TEVENT
        try:
            #structure message for msgout
            msgout = {
                'event': "",
                'sessionid': sessionid,
                'result': {
                    'codeerror': 0,
                    'resultcommand': '',
                    'command': command
                },
            }
            if eventstart != False:
                #ecrit dans queue_out_session l'evenement eventstart
                if '_eventype' in eventstart and '_eventype' == 'TEVENT':
                    msgout['event'] = eventstart
                    queue_out_session.put(msgout)
                else:
                    queue_out_session.put(eventstart)
            cmd = cmdx(command, timeout)
            cmddecode = decode_strconsole(cmd.stdout)
            if cmd.code_error == 0 and eventfinish != False:
                ev = eventfinish
            elif cmd.code_error != 0 and eventfinish != False:
                ev = eventerror
            else:
                ev = False

            print "================================================"
            print " execution command in process"
            print "================================================"
            print cmd.code_error
            print cmddecode
            print "================================================"

            if ev != False:
                if '_eventype' in ev and '_eventype' == 'TEVENT':
                    #ecrit dans queue_out_session le TEVENT
                    msgout['event'] = ev
                    #msgout['result']['resultcommand'] = cmd['result']
                    msgout['result']['resultcommand'] = cmddecode
                    msgout['result']['codeerror'] = cmd.code_error
                    queue_out_session.put(msgout)
                else:

                    #"10@firstlines" : "",
                    #"10@lastlines": "",
                    #"@resultcommand":""

                    #ev['data']['result'] = {'codeerror': cmd['code'],'resultcommand' : cmd['result'],'command' : command  }
                    ev['data']['result'] = {
                        'codeerror': cmd.code_error,
                        'command': command
                    }
                    for t in keysdescriptor:
                        if t == 'codeerror' or t == 'command':
                            pass
                        elif t == '@resultcommand':
                            ev['data']['result']['@resultcommand'] = cmd.stdout
                        elif t.endswith('lastlines'):
                            nb = t.split("@")
                            nb1 = -int(nb[0])
                            tab = [
                                x for x in cmd.stdout.split(os.linesep)
                                if x != ''
                            ]
                            tab = tab[nb1:]
                            ev['data']['result'][t] = os.linesep.join(tab)
                        elif t.endswith('firstlines'):
                            nb = t.split("@")
                            nb1 = int(nb[0])
                            tab = [
                                x for x in cmd.stdout.split(os.linesep)
                                if x != ''
                            ]
                            tab = tab[:nb1]
                            ev['data']['result'][t] = os.linesep.join(tab)
                    queue_out_session.put(ev)

            #cmd = simplecommandstr(command)

            #if cmd['code'] == 0 and eventfinish != False:
            #ev = eventfinish
            #elif cmd['code'] != 0 and eventfinish != False:
            #ev = eventerror
            #else:
            #ev = False

            #print "================================================"
            #print " execution command in process"
            #print "================================================"
            #print cmd['code']
            #print cmd['result']
            #print "================================================"

            #if ev != False:
            #if '_eventype' in ev and '_eventype' == 'TEVENT':
            ##ecrit dans queue_out_session le TEVENT
            #msgout['event'] = ev
            #msgout['result']['resultcommand'] = cmd['result']
            #msgout['result']['codeerror'] = cmd['code']
            #queue_out_session.put(msgout)
            #else:
            #ev['data']['result'] = {'codeerror': cmd['code'],'resultcommand' : cmd['result'],'command' : command  }
            #queue_out_session.put(ev)

        except TimeoutError:
            logging.error("TimeoutError process  %s sessionid : %s" %
                          (command, sessionid))
        except KeyboardInterrupt:
            logging.warn("KeyboardInterrupt process  %s sessionid : %s" %
                         (command, sessionid))
            sys.exit(0)
        except:
            traceback.print_exc(file=sys.stdout)
            logging.error("error execution process %s sessionid : %s" %
                          (command, sessionid))
            sys.exit(0)