Re: ejecutar procesos en servidor Linux desde la web
Martin Ibarra <[email protected]>
| Newsgroups | gmane.comp.gnome.mono.hispano |
|---|---|
| Message-ID | <[email protected]> |
Bueno tambien creo ue el path o los paths deberian ir en el .config para que pueda ser mas portable. 2009/6/19 Jose Pino Medina <[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 > _______________________________________________ > 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