La Web del Programador: Comunidad de Programadores
 
    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;