Pregunta: | 10369 - EJECUCION DE SHELL REMOTA |
Autor: | Pablo Espinoza |
Hola,
Mi consulta es si existe algún comando para la ejecución remota de una SHELL de Linux o Unix, como dato estudie la ShellExecute pero parece que solo sirve para ejecutable de windows. De antemano gracias por sus respuesta..... |
Respuesta: | xavier bravo |
yo ejecuto shells de unix desde delphi, lo que hago es crear el shell en unix que se lanza desde delphi ejecutando un objeto tstoredproc, aqui va el ejemplo, esta largo pero sirve:
create procedure "informix".oce99_crea_unl(qclas_ptal char(13), qanio_cons integer, qmes_cons integer) {Autor:Xavier Bravo S. Fecha:10 de Junio de 2003 Procedimiento para generar archivos planos a partir de las tablas alm_recetas y existencias_mig; despues de generarlos, se envian a su respectivo servidor delegacional; toda la operacion toma como base la clas_ptal de la unidad } define comando1 char(254); define comando2 char(254); define comando2a char(254); define wdir_ip char(15); define cmd0 char(80); define cmd1 char(80); define cmd2 char(30); define cmd3a char(25); define cmd3 char(30); define cmd4 char(25); define cmd4a char(25); define cmd4b char(25); define cmd5 char(25); define cmd6 char(25); define winstancia char(30); --set debug file to "xavo.err"; --trace on; let comando1="unload to "||trim(qclas_ptal)||".csm select clas_ptal,gpo,gen,esp,dif,"|| "var,anio_cons,mes_cons,existencia,exis_no_disp,cpm_d,cpm_n,cpm_s,cpm_s,inv_ant"; let comando2=" from sai_alm:existencias_mig where clas_ptal="||"\'"||trim(qclas_ptal)||"\'"|| " and anio_cons="||qanio_cons ||" and mes_cons="||qmes_cons; system "echo " || trim(comando1) || " > " ||trim(qclas_ptal)||".sql"; system "echo " || trim(comando2) || " >> " ||trim(qclas_ptal)||".sql"; system 'dbaccess poi_alm ' || qclas_ptal; system 'rm '|| qclas_ptal||'.sql'; --ya que genero el archivo, ahora se requiere saber a qué servidor delegacional se --deben enviar, se obtiene la IP segun la clas_ptal de la tabla oce99_catalogo_ip select ip into wdir_ip from alm_unidades where clas_ptal=trim(qclas_ptal); let cmd1 = "open "||wdir_ip; let cmd2 = "user enlace farmacia"; let cmd3a= "asc"; let cmd3 = "prompt"; let cmd4a= "del " ||qclas_ptal||".rct"; let cmd4b= "del " ||qclas_ptal||".csm"; let cmd4 = "put " ||qclas_ptal || ".rct"; let cmd5 = "put " ||qclas_ptal || ".csm"; let cmd6 = "bye"; system "echo " || trim(cmd1) || "> " || qclas_ptal || ".snd"; system "echo " || trim(cmd2) || ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd3a)|| ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd3) || ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd4a)|| ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd4b)|| ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd4) || ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd5) || ">>" || qclas_ptal || ".snd"; system "echo " || trim(cmd6) || ">>" || qclas_ptal || ".snd"; system "ftp -n < " || qclas_ptal || ".snd&"; system 'rm '||qclas_ptal||'.snd'; system 'rm '||qclas_ptal||'.rct'; system 'rm '||qclas_ptal||'.csm'; --finalmente inserta en log2 para que se ejecute la instruccion --en el server delegacional execute procedure sube_a_log2(qclas_ptal); --trace off; end procedure; |