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