def do_job(self, line): conn = self.conn() if conn: #print "Line = %s" % line r = cmd.Cmd.parseline(self, line) print "job = " , r if r[0] and r[1]: print "Sending JOB : %s" % r[0] conn.send('job') ## On doit recevoir Ok send your job print "Srv => ", conn.recv() j=Job() j.name=r[0] j.cmd=r[1] conn.send(j) ## On doit recevoir Job receiveing ou erreur " print "Srv => ", conn.recv() ## On doit recevoir Job job finish" print "Srv => ", conn.recv() ## On doit recevoir le job j = conn.recv() ## On doit recevoir Invite de fin OK see your soon" print "Srv => ", conn.recv() ## la connexion doit se terminer ## Affichage du resultat j.pr() else: print "Job incorrecte [%s] [%s]" % (r[0], r[1]) else: print "Not connected" ## Dans tout les cas la connexion est ferme conn=None
def render(self, request): if request.args.has_key("string"): string = request.args["string"][0] j = Job() j.name = "JOB 0001" j.cmd = string self.worker.job = j self.worker.work() #rc, err, out, cmd, ilog = self.worker.work(string) rc = j.returncode err = j.stderr out = j.stdout cmd = j.cmd ilog = j.ilog else: rc, err, out, cmd, ilog = ( 0, "", "", "<>", [] ) rep = """ <html><body><form> <input type='text' name='string' value='%s' /> <input type='submit' value='Go' /> """ rep += "<hr/>" rep += "<table border=1>" rep += "<tr>" rep += "<th> Libelle </th>" rep += "<th> Valeur </th>" rep += "</tr>" rep += "<tr>" rep += "<td> Commande </td>" rep += "<td> %s </td>" % cmd rep += "</tr>" rep += "<tr>" rep += "<td> stderr </td>" rep += "<td> %s </td>" % err rep += "</tr>" rep += "<tr>" rep += "<td> stdout </td>" rep += "<td> %s </td>" % out rep += "</tr>" for l in ilog: rep += "<tr>" rep += "<td></td>" rep += "<td> %s </td>" % l rep += "</tr>" rep += "</table>" rep += """ </form></body></html> """ return rep
def do_batch(self, line): #print "Line = %s" % line r = cmd.Cmd.parseline(self, line) #print "job = " , r if r[0] and r[1]: conn = self.conn() ## la il faut passer la main ## a process j = Job() j.name = r[0] j.cmd = r[1] b = Process(target=run_batch, args=(j,conn,self.b_list)) b.start() else: print "Job incorrecte [%s] [%s]" % (r[0], r[1])
def lineReceived(self, line): if hasattr(self, 'handle_' + line): getattr(self, 'handle_' + line)() else: ## ce n'est une fonction interne ## donc c'est une commande a passer ## on doit creer un job j = Job() j.name = "JOB 0001" j.cmd = line self.factory.worker.job = j self.factory.worker.work() #rc, err, out, cmd, ilog = self.factory.worker.work() self.sendLine( "Commande : %s " % j.cmd ) self.sendLine( "Return Code = %s " % j.returncode ) if j.stderr: self.sendLine( "Err = %s" % j.stderr ) if j.stdout: self.sendLine( "Out = %s" % j.stdout ) for l in j.ilog: self.sendLine( "> %s " % l )
import sys from multiprocessing.connection import Client from array import array from job import Job address = ('localhost', 6000) conn = Client(address, authkey='secret password') print conn.recv() # Entete du serveur if sys.argv[1]: conn.send(sys.argv[1]) else: j=Job() j.name='TEST' j.cmd="ls -l" conn.send(j) print conn.recv() # Entete du serveur conn.close()
PORT=6000 PASSWORD='******' address = (SERVEUR, PORT) conn = Client(address, authkey=PASSWORD) print conn.recv() # Entete du serveur if len(sys.argv) > 1 : cmd=sys.argv[1] if cmd == 'j1': print "Cli : JOB1" conn.send('job') print "Srv => ", conn.recv() j=Job() j.name='TYPE JOB 1' j.cmd="ls -l ; sleep 55" #j.cmd="ls -l " conn.send(j) j = conn.recv() j.pr() conn.close() elif cmd == 'j2': print "Cli : JOB2" conn.send('job') print "Srv => ", conn.recv() j=Job() j.name='TYPE JOB 2' j.cmd="ls -l ; sleep 25" #j.cmd="ls -l " conn.send(j) j = conn.recv()