Eivar,<br><br>acabo de ver tu codigo, en python como funciona el popen? es igual que en C? es decir, si hago un popen el comando se ejecuta y queda activo hasta hacer un pclose ? En este caso cuando otro admin haga shutdown -c permite validar el cierre del shutdown, seria genial porque desde la GUI podria uno matenerse leyendo la salida y mandar un popup cuando se reciba la cadena de shutdown cancelled, sin embargo, me preocupa que el codigo no seria internacionalmente standard, hay que pensar en un mejor metodo para validar la cancelacion, despues de todo a un sistema multiusuario no se le puede quitar lo multiusuario.
<br><br>Mario,<br>el crontab, genial!!! cierto se va a requerir un parser, a mi modo de ver no es muy complicado, pero al menos este parser debe reconocer las lineas que agrego para borrarlas o modificarlas segun o que se quiera hacer y si te fijas las unicas operaciones a hacer con el serian:
<br>1. Eliminar la entrada completa del crontab (requeriria alguna identificacion, de repente un comentario?)<br>2. Cambiar los parametros de recurrencia que en si es bastante simple los 5 primeros campos comparten una sintaxis similar
<br>Creo que este parser no requiere C/C++ no habria ninguna ganancia ni la sintaxis del crontab es muy complicada como para requerir velocidad en el analisis, pienso que en este caso puede incluso demorar el desarrollo.
<br>
Tambien vi que inicialmente Eivar planea usar glade asi que como que Qt esta fuera del escenario, por otro lado hay pyQt, pero creo q le toca a Eivar decidir si desea cambiar el toolkit y el lenguaje de programacion.<br>

<br>Eivar,<br><br>Retomando lo que te comente hace algun momento mas la contribucion de Mario:<br>1. Recurrencia: parser =&gt; crontab, sabes si hay alguna libreria en python que te pueda ayudar con eso?<br>2. Para ver lo de la cancelacion el shutdown -c funciona pero desde la GUI habria que verificar que se cancelo el shutdown local, cuando esto sucede si tu instalacion esta en ingles el shutdown envia lo siguiente:
<br><span style="font-weight: bold;">shutdown: Shutdown cancelled</span><br>Ya que estas usando popen (y si es q funciona como en C) puedes mantener un loop leyendo el output y atrapar esa cadena para saber que fue cancelo y envar un popup al usuario de pyShutodwn diciendo que hubo una cancelacion remota. OJO esto no funciona si el shutdown esta traducido a español u otro lenguaje.
<br>3. El tema de multiusuario en realidad es transparente ya que como tu backend es el shutdown mismo, si te fijas arriba aun si corren shutdown -c desde la CLI tu programa sigue funcionando lo unico es que para tu pyShutdown local tendrias que manejar la cancelacion desde algun thread o enviarle un signal al shutdown activo para cancelarlo, igonoro como se haria eso en python. Si tienes otro usuario en una sesion remota corriendo pyShutdown y este hace cancel desde la interfaz grfica, si esta maneja el cancel mediante shutdown -c&nbsp; la instancia principal lo maneja del modo que comente enantes.
<br>Creo que el problema con el #3 seria como enviar un shutdown -c cuando tienes un shutdown activo, C/C++ lo que yo haria seria correr cualquier shutdown -h desde un thread, tenieno en la GUI un boton de cancel q cuando se presiones haga un shutdown -c terminaria el thread local y por ende el shutdown mismo, no se como podrias traducir eso a python.
<br><br>Eivar, tambien comentaste algo sobre activar el shutdown bajo la condicion de finalizacion de otro proceso, alli te puedes ayudar con el comando ps o bien haciendo un parsing de /proc, en /proc todos los archvos numericos corresponden a PIDs de comandos, en ese caso seria de ver que el file cuyo PID corresponde con el proceso a monitorear cesa de existir y BAM!!!! le das un shutdown -h, por el lado del ps posiblemente tendrias que hacer un parsing sencillo, pero por lo de proc, si fuera en C, yo utilizaria access y si retorna diferente de 0 es porque el programa ya ceso de existir, no se si en python seria igual.
<br><br>Gente, creo q tenemos algo q podemos compartir!!!!!<br><br>Saludos<br>
<br><div><span class="gmail_quote">On 9/5/07, <b class="gmail_sendername">Eivar Montenegro Mosquera</b> &lt;<a href="mailto:e.mont01@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">e.mont01@gmail.com
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Mario tienes que entrar en la sección de proyectos.<br>De todas formas te adjunto el script en python que programa el apagado del pc usando el comando shutdown.<br><br>Los demás de la lista también lo pueden observar para que vean que tenemos ya, solo falta una interfaz gráfica y adaptar este código que les adjunto a la interfaz que usemos.
<br><br><div><span class="gmail_quote">El día 5/09/07, <b class="gmail_sendername">Mario Young</b> &lt;<a href="mailto:maye.co@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">maye.co@gmail.com
</a>&gt; escribió:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br>Saludos,<br><br>Existe la posibilidad de hacer que cualquier comando sea recurrente... con el cron, en mi <br>caso yo tengo configurado para que siempre a las 3:am se apague la computadora todos <br>los días como se puede hacer esto con el archivo /etc/crontab donde pueden ver como 
<br>funciona aca <a href="http://en.wikipedia.org/wiki/Crontab" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://en.wikipedia.org/wiki/Crontab</a> en mi caso es asi:<br><br>0 3 * * *&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /sbin/shutdown -h now
<br><br><pre># Use the hash sign to prefix a comment<br><br># +---------------- minute (0 - 59)<br># |  +------------- hour (0 - 23)<br># |  |  +---------- day of month (1 - 31)<br># |  |  |  +------- month (1 - 12)<br># |  |  |  |  +---- day of week (0 - 7) (Sunday=0 or 7)
<br><br><br><br>
# |  |  |  |  |<br># *  *  *  *  *  command to be executed</pre><br>De esta forma se podría hacer que el comando se ejecute recurrentemente, toca hacer un <br>&quot;parser&quot; de este archivo y una GUI para la configuración, personalmente prefiero C/C++ y Qt4
<br><br>Eivar: <br>Todavía no encuentro ningún código en la pagina de la fraternidad, si tienes<br>algún tiempo enviarlo a mi correo y voy creando el proyecto en launchpad.<br><br>Saludos,<br><span><br>MY</span>
<div><span><br><br><br><br><br><br>
<div><span class="gmail_quote">On 9/5/07, <b class="gmail_sendername">Juan Guerrero</b> &lt;<a href="mailto:ryoma.nagare@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">ryoma.nagare@gmail.com
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ok, entonces estamos hablando de una aplicacion que simplemente uno levanta, le configura la opcion de apagado y ella finalmente apaga la PC cuadno la condicion se cumple, asumo que luego de la programacion habria que incluir algun metodo para cancelar el apagado tambien.
<br>Dime algo, dentro de plan, tienes contemplado hacer que esto sea recurrente? es decir. Todos los lunes apagarse cuando el proceso X (mplayer, vlc, xine) termina? O de repente todos los domingo apagarse a las 2:00 am?
<br>
La parte de el apagado condicional ya la maneja el mismo comando shutdown como tal asi que pienso que la principio seria solo un frontend del mismo.<br>Otra cosa, estoy viendo que de la forma como estas conceptualizando el programa lo estas contemplando en un ambiente donde una sola persona tiene acceso de administracion, que ocurre si la PC en cuestion es operada por 2 personas y la segunda tiene una sesion de SSH abierta cuando pyShutdown esta activo, se le daria a este segundo usuario una opcion de cancelar el shutdown?
<br>Ya tienes algo adelantado?<br><br><br>Saludos<br><br><div><div><span><span class="gmail_quote">On 9/5/07, <b class="gmail_sendername">Eivar Montenegro Mosquera</b> &lt;<a href="mailto:e.mont01@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">




e.mont01@gmail.com</a>&gt; wrote:
</span></span></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><span>Bueno la idea de PyShutdown es crear un front-end para el comando Shutdown que te permita usar las funcionalidades de dicho comando, principalmente programar el apagado automático del pc después de un tiempo dado.
<br><br>Es común que a veces nos quedamos haciendo algo en el pc, como ver una película, o que tenemos que salir y dejar la pc encendida haciendo una tarea y bueno tenemos el comando para programar el apagado así que se me ocurrió ¿por que no? Crear una herramienta gráfica donde hacer esa misma tarea.
<br><br>Estaba pensando en que en el futuro se podría hacer que el programa de alguna forma pudiese esperar a que un proceso terminara para luego apagar el pc.<br clear="all"><br>Bueno ¿qué les parece la idea?...<br><span>





-- <br>
Eivar A. M. M.
</span><br></span></div>--<br>Ubuntu-pa lista de correos<br>Comunidad Local de Ubuntu GNU/Linux de Panama<span><br><a href="mailto:Ubuntu-pa@lists.ubuntu.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">




Ubuntu-pa@lists.ubuntu.com
</a><br></span>Modifique su configuracion: <a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa
</a>
<br><br></blockquote></div><br><br clear="all"><br>-- <br>Juan V. Guerrero
<br>--<br>Ubuntu-pa lista de correos<br>Comunidad Local de Ubuntu GNU/Linux de Panama<br><a href="mailto:Ubuntu-pa@lists.ubuntu.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Ubuntu-pa@lists.ubuntu.com
</a><br>
Modifique su configuracion: <a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa</a><br>



<br>
</blockquote></div>
</span></div><br>--<br>Ubuntu-pa lista de correos<br>Comunidad Local de Ubuntu GNU/Linux de Panama<br><a href="mailto:Ubuntu-pa@lists.ubuntu.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Ubuntu-pa@lists.ubuntu.com
</a><br>Modifique su configuracion: <a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa
</a>
<br><br></blockquote></div><br><br clear="all"><br>-- <br>Eivar A. M. M.
<br>--<br>Ubuntu-pa lista de correos<br>Comunidad Local de Ubuntu GNU/Linux de Panama<br><a href="mailto:Ubuntu-pa@lists.ubuntu.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Ubuntu-pa@lists.ubuntu.com
</a><br>
Modifique su configuracion: <a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.ubuntu.com/mailman/listinfo/ubuntu-pa</a><br>

<br>
<br clear="all"></blockquote></div><br><br clear="all"><br>-- <br>Juan V. Guerrero