Re: Ayuda, listar tareas de crontab linux en web2py

155 views
Skip to first unread message

Alan Etkin

unread,
Oct 3, 2012, 4:09:45 PM10/3/12
to web2py-usuarios
Al parecer hay un módulo de Python permite leer y escribir el crontab

http://pypi.python.org/pypi/python-crontab

Para usarlo en una app web2py tendrías que copiar el módulo en <app>/
modules

Luego, en el controlador default.py:

def mostrar_cron():
from crontab import CronTab
return dict(lista_cron=CronTab())

En la vista default/mostrar_cron.html:

<ul>
{{for trabajo en lista_cron:}}
{{=LI(trabajo)}}
{{pass}}
</ul>

Esto debería mostrar la lista en el url <app>/default/
mostrar_cron.html

Si podés probalo y subí el resultado.

On Oct 3, 4:46 pm, "a.rodriguez" <ar.rodriguez1...@gmail.com> wrote:
> Hola a todos,
>
> Necesito saber como listar en una vista todas las tareas que tengo en mi
> crontab linux en web2py.
>
> Saludos,

a.rodriguez

unread,
Oct 3, 2012, 5:16:47 PM10/3/12
to web2py-...@googlegroups.com
Funciono correctamente,
Tengo una duda, En el ejemplo anterior que me enviastes Alan, ¿Aqui se me listaran las tareas que tengo en linux ?

Alan Etkin

unread,
Oct 4, 2012, 8:45:17 AM10/4/12
to web2py-...@googlegroups.com
Funciono correctamente,
Tengo una duda, En el ejemplo anterior que me enviastes Alan, ¿Aqui se me listaran las tareas que tengo en linux ?


Habría que ver en la documentación del módulo. Supuestamente tenés acceso a cualquier crontab de tu sistema GNU/Linux, pasando los argumentos adecuados. Por defecto, devuelve el crontab principal del sistema operativo. No hay que confundirlo con el crontab de la app, aunque se debería acceder de la misma forma, porque creo que usa la misma sintaxis, pero haría falta que pases la ruta del archivo como parámetro. De todas formas eso tampoco sería problema, porque con web2py se puede recuperar de esta forma:

import os
cron = os.path.join(request.folder, "cron", <nombre>)

Alan Etkin

unread,
Oct 4, 2012, 10:38:31 AM10/4/12
to web2py-usuarios
Con respecto a tu última consulta (no está en el thread):

CronTab() abre el crontab del usuario que corre web2py

En Ubuntu, el crontab del usuario se edita con este comando:

crontab -e

El crontab de todo el sistema se puede abrir, en la app, con:

microntab = CronTab(tabfile="/etc/crontab")

/etc/crontab es la ruta para Ubuntu, eso puede cambiar según la
distribución.

Tenés más información en https://help.ubuntu.com/community/CronHowto#Crontab_Example

La sintaxis de uso de crontab ya es más un tema de Linux que de
web2py, y existe abundante información en la web (desde wikipedia
hasta el manual de cron que viene con la distribución).

a.rodriguez

unread,
Oct 4, 2012, 10:39:53 AM10/4/12
to web2py-...@googlegroups.com
Alan,
Agradezco tu ayuda, ya que soy nuevo en web2py y todavia no manejo muy bien el tema,
Volviendo al tema anterior yo hice todos los pasos que me has indicado y cuando ejecuto me muestra una vista pero vacia porque no he creado tareas en crontab ni en linux. Necesito saber como y donde se realizan las tareas para poder probar bien que esten listando las tareas?
SI me puedes enviar un pequeño ejemplo o algún link para poder sacar ejemplo de como realizar esta tarea y se muestren por pantalla.

Saludos

a.rodriguez

unread,
Oct 4, 2012, 11:40:07 AM10/4/12
to web2py-...@googlegroups.com
def mostrar_cron():
    from crontab import CronTab
    microntab = CronTab(tabfile="/etc/crontab")
    return dict(microntab=CronTab())

Estara bien lo que estoy asiendo?? si quiero listar las tareas del archivo crontab que estan en mi sistema (linux)???

Federico Ferraro

unread,
Oct 4, 2012, 1:44:09 PM10/4/12
to web2py-...@googlegroups.com
En la vista tendrías que iterar sobre el objeto microntab: 

{{for job in microntab:}}
   {{=job}}
{{pass}}

Podrias darle el formato que quieras .. 
También podrías leer el cron de la siguiente forma, pero no estaria procesado (archivo crudo) :

def mostrar_cron():
    f=open('/etc/crontab','r')
    f.close()
return dict(cron=f)

En la vista tendrías que llamar al método readlines():

{{=cron.readlines()}}
   

Saludos ...

--
--
Federico Ferraro
Usuario Linux : 482533.
--

a.rodriguez

unread,
Oct 4, 2012, 2:07:57 PM10/4/12
to web2py-...@googlegroups.com
Problema solucionado, gracias Alan por la ayuda...
Federico gracias tambien por querer ayudar en mi problema.

Saludos,

a.rodriguez

unread,
Oct 5, 2012, 9:07:24 AM10/5/12
to web2py-...@googlegroups.com
Abriendo el tema,
Pregunta, ¿Como seria agregar un botón en la vista y llamar a una función que me permita ejecutar los procesos de linux que tengo listado???

a.rodriguez

unread,
Oct 12, 2012, 3:32:23 PM10/12/12
to web2py-...@googlegroups.com
Abriendo el tema,
Como podria listar los procesos de un usuario??? ejemplo: en el codigo de arriba se puede listar pero lista solo los crontab del usuario root por defecto. ahora quiero pasarle un usuario al crontab para que me liste los de ese usuario especifico.
como seria el codigo???
Si alguien sabe como hacerlo seria de gran ayuda.

Alan Etkin

unread,
Oct 13, 2012, 9:52:18 AM10/13/12
to web2py-usuarios
> Abriendo el tema,
> Como podria listar los procesos de un usuario??? ejemplo: en el codigo de
> arriba se puede listar pero lista solo los crontab del usuario root por
> defecto. ahora quiero pasarle un usuario al crontab para que me liste los
> de ese usuario especifico.
> como seria el codigo???

http://pypi.python.org/pypi/python-crontab/

Esto abre para lectura/escritura el crontab del usuario

cron_usuario = CronTab(<nombre>)
Reply all
Reply to author
Forward
0 new messages