Re: ejecutar procesos en servidor Linux desde la web

Jose Pino Medina <[email protected]>
Newsgroups gmane.comp.gnome.mono.hispano
Message-ID <[email protected]>
On Wed, 17 Jun 2009 13:57:47 -0700, Martin Ibarra <[email protected]>
wrote:
> Haber prueba
> 
>   string MKDRI = "mkdir -p /path/to/directory/_aqui_";
>   Process p = Process.Start(MKDRI);
>   p.Close();

A mi el siguiente codigo me funciona ..

public virtual void button1Clicked(object sender, EventArgs args)
		{
						
			label1.Text = ejecutaComando(this, "mkdir", "tmp");
		}
		
		private string ejecutaComando(Page pagina, string str_comando, string
str_parametros)
		{ 
			string str_ejecutaComando = "";
			string str_directorio = "/home/joil/";
			try
			{
				System.Diagnostics.Process proc = new System.Diagnostics.Process();
				
				proc.StartInfo.WorkingDirectory = str_directorio;
				proc.StartInfo.FileName = str_comando;
				proc.StartInfo.Arguments = str_parametros;
                proc.StartInfo.Verb = "Print";
                proc.StartInfo.CreateNoWindow = true;
                proc.Start();
				
				
				

			}
			catch (Exception ex) { 
				//this.showInfo.ShowMessageBox(pagina, "No se pudo ejecutar comando en
servidor");
				Response.Write("No se pudo ejecutar comando en servidor : " +
ex.Message.ToString());
			}

		return str_ejecutaComando;
		}
...
> 
> pruebalo sin esto:
> 
> System.Diagnostics.ProcessStartInfo startInfo = new
>> System.Diagnostics.ProcessStartInfo();
>>
>>               startInfo.Arguments = str_parametros;
>>               startInfo.FileName = str_comando;
>>               startInfo.WorkingDirectory = str_directorio;
>>
>>               startInfo.UseShellExecute = false;
>>               startInfo.ErrorDialog = false;
>>               startInfo.CreateNoWindow = true;
>>               startInfo.RedirectStandardOutput = true;
> 
> Saludos.
> yo asi tengo un proceso corriendo bueno en determinado momento cuando me
> conecto a otro servidor y le envio comandos via ssh .
> 
> 
> 
> 2009/6/16 frank <[email protected]>
> 
>> Si el usuario es el correcto y si tiene los permisos y privilegios
>> necesarios para ejecutar comandos en el servidor esa parte está
>> correcta.
>> El
>> asunto radica en que en las pruebas que hice ayer pues ni si kiera un
"ls
>> -l" o un "mkdir nombre" pude hacer pues como comento no me da error en
>> ningun lado incluso si quito las sentencias try/catch en todos el
código
>> no
>> me arroja errores pero tampoco me hace nada ni me devuelve nada.
>>
>> El asunto de debug que comentan pues ... Soy poco entendido en
>> programación
>> (no comprendo eso de si puedo hacer un debug en el Mono) más me gusta
>> trabajar directamente con los servidores pero esto es un proyecto
>> personal
>> y
>> por eso mi interes en entender, aprender y hacerlo funcionar.
>>
>> > Saludos lista,
>> Hola
>> > Hace tiempo hice esta misma pregunta y aquí me ayudaron con la
>> > solución
>> y
>> > me
>> > funcionó lo que en ese tiempo probé, sin embargo ahora que debo
>> > retomar
>> y
>> > culminar el mismo proyecto estoy teniendo ciertos inconvenientes con
>> > esta situación.
>> >
>> > Esta es la función que debería hace la magia de ejecutar un comando
>> > en
>> un
>> > servidor Linux.
>> > private string ejecutaComando(Page pagina, string str_comando, string
>> > str_parametros)
>> > {
>> >       string str_ejecutaComando;
>> >       string str_directorio = "/home/usuario/";
>> >       try
>> >       {
>> >               System.Diagnostics.ProcessStartInfo startInfo = new
>> > System.Diagnostics.ProcessStartInfo();
>> >
>> >               startInfo.Arguments = str_parametros;
>> >               startInfo.FileName = str_comando;
>> >               startInfo.WorkingDirectory = str_directorio;
>> >
>> >               startInfo.UseShellExecute = false;
>> >               startInfo.ErrorDialog = false;
>> >               startInfo.CreateNoWindow = true;
>> >               startInfo.RedirectStandardOutput = true;
>> >
>> >               try
>> >               {
>> >                       System.Diagnostics.Process proc =
>> > System.Diagnostics.Process.Start(startInfo);
>> >                       System.IO.StreamReader sr = proc.StandardOutput;
>> >                       proc.WaitForExit();
>> >
>> >                       str_ejecutaComando = sr.ReadToEnd();
>> >
>> >                       sr.Close();
>> >               }
>> >               catch { this.showInfo.ShowMessageBox(pagina, "No se
>> >               ejecutó
>> > sentencia en servidor"); }
>> >       }
>> >       catch { this.showInfo.ShowMessageBox(pagina, "No se pudo
ejecutar
>> > comando en servidor"); }
>> >
>> >       return str_ejecutaComando;
>> > }
>> >
>> > Y la llamada es con:
>> > string str_comandoSH = "mkdir";
>> > string str_argumentos = " nombre_directorio_a_crear"; str_ejecucion =
>> > this.ejecutaComando(this.Page, str_comandoSH, str_argumentos);
>> >
>> > El asunto es que no me devuelve nada pero tampoco da error en la
>> ejecución
>> > del asp.net ni ejecuta la sentencia en el servidor. Alguno tiene una
>> > idea
>>
>> El usuario tiene permisos para crear directorios ??
>>
>> si estas usando mod-mono debiese ser el usuario www-data (en el caso de
>> debian), si estas corriendo xsp debiese se el usuario que lo levanta
xsp.
>> > de
>> > dónde puedo estar fallando ?? Ahh se me olvidaba, con esto tampoco
>> > puedo saber si la sentencia tuvo error al ejecutar o no, pues la idea
>> > es que si el servidor linux da error al ejecutar el comando pues ese
>> > error debe ser devuelto a la aplicación pero no logro conseguir esto.
>> >
>> > Disculpen por lo extenso del texto y de antemando gracias por su ayuda
>> > !!
>> >
>> > -----------------------------------------------
>> >
>> >
>> >
>> > _______________________________________________
>> > Mono-hispano mailing list
>> > [email protected]
>> > https://listas.hispalinux.es/mailman/listinfo/mono-hispano
>>
>> --
>> www.joil.cl
>> _______________________________________________
>> Mono-hispano mailing list
>> [email protected]
>> https://listas.hispalinux.es/mailman/listinfo/mono-hispano
>>
>> _______________________________________________
>> Mono-hispano mailing list
>> [email protected]
>> https://listas.hispalinux.es/mailman/listinfo/mono-hispano
>>

-- 
www.joil.cl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.