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)
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)
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)
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 __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 __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
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 {}
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)
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)
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)
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)
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)