IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Modifier crontab avec python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut Modifier crontab avec python
    Bonjour,

    Je n'arrive pas à modifier la crontab à partir de mon script python (J'utilise python 2 sous Raspbian Wheezy, mon utilisateur est "pi") :

    #J'ai installé : pip install python-crontab

    #Ceci est un exemple : Mon script s'exécute à 12h grâce à la crontab (configurée hors script). Puis dans ce script, je veux modifier la crontab afin de relancer ce même script à 14 heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from cron import CronTab
    users_cron = CronTab(user='pi')
    job = cron.new(command='/home/pi/Desktop/test.py') #Je veux exécuter ce script
    job.hour.on(14)     # Je veux l'exécuter à 14h
    job.enable()
    #Une fois le programme quitté, je vérifie dans la crontab s'il y a eu la modification avec "crontab -e"....Mais non :-(

    J'ai essayé pleins de variantes ou tuto mais je n'arrive pas à trouver ce qui ne va pas.

    Merci pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Le script a-t-il été lancé via sudo?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut
    Salut :-)

    Oui je lance bien mon script via sudo lorsque je le lance grâce à cron.

    Après, lorsque je fais des tests, juste pour voir si la crontab est modifiée,
    je lance le script manuellement via interface graphique, donc je ne suis pas en root.

    Après, que ce soit en root ou non, dans le code que j'ai donné, il me dit que 'cron n'est pas défini'
    au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    job = cron.new(command='/home/pi/Desktop/test.py') #Je veux exécuter ce script
    Je ne sais pas comment l'initialiser ou s'il le faut d'ailleurs.

    - J

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par devloPoint Voir le message
    Après, que ce soit en root ou non, dans le code que j'ai donné, il me dit que 'cron n'est pas défini'
    au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    job = cron.new(command='/home/pi/Desktop/test.py') #Je veux exécuter ce script
    Si le script plante, normal qu'il ne modifie pas la crontab.
    Ajoutez "import cron" à la première ligne.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    J'utilise une ancienne version, donc vérifie l'import.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    from crontab import CronTab
     
    tab = CronTab()
     
    # Exemple
    date = (12, 5, 8, 30)   # 12 mai 8:30
    tab.dom().on(date[0])
    tab.month().on(date[1])
    tab.hour().on(date[2])
    tab.minute().on(date[3])
     
    tab.write()
     
    # Exemple 2
    date = (3, 10, 10)  # Tous les mercredis à 10:30
    tab.dow().on(date[0])
    tab.hour().on(date[1])
    tab.minute().on(date[2])
     
    tab.write()
    Je remarque que j'ai utilisé ceci dans mon code, j'ignore si c'est toujours justifié, mais je le met à tout hasard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        def _write(self):
            def write(*args):
                self.tab.write()
     
            # To avoid an 'error: (4, 'System call interrupted')' the crontab
            # must be created in separate process
            Thread(target=write, args=(None,)).start()
    Et NUL besoin de droits root pour crontab.

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut
    Wiztricks : Pour 'import cron', il ne connait pas ce module
    VinsS : Pour ton code, j'ai un message d'erreur me disant que CronTab n'a pas d'attribut hour, month...

    Je penses que je ne dois pas avoir la bonne bibliothèque.

    J'ai trouvé une solution provisoire avec la création d'un fichier crontab temporaire que j'arrive à réinsérer dans la crontab.
    C'est un peu plus lourd en code mais je dois avancer, c'est pour le travail (et ils m'attendent ;-))))

    Merci à vous deux

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Et NUL besoin de droits root pour crontab.
    Bonjour

    Ca dépend si on veut modifier son cron (dans ce cas effectivement la commande "crontab" fait la modif pour le compte de l'user qui la lance), ou celui d'un utilisateur X (ce qui devient alors une tâche d'admin que seul root peut exécuter).
    Comme le code de devloPoint indique users_cron = CronTab(user='pi'), on peut penser qu'il veut modifier le cron de l'user "pi" (sinon je pense qu'il aurait utilisé le LOGNAME)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Modifier un tableau dans un XML avec Python
    Par Peter_TLSE dans le forum Général Python
    Réponses: 4
    Dernier message: 07/04/2014, 15h54
  2. lire écrire lister modifier calendrier exchange avec python
    Par raaleur094 dans le forum Bibliothèques tierces
    Réponses: 0
    Dernier message: 09/10/2013, 14h41
  3. Modifier un fichier résultat avec python
    Par amico33 dans le forum Général Python
    Réponses: 3
    Dernier message: 19/04/2012, 13h58
  4. Comment modifier le contenu d'un noeud de type texte avec python?
    Par Tinkite82 dans le forum Général Python
    Réponses: 14
    Dernier message: 01/06/2010, 11h58
  5. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo