Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb avec script Python et Crontab...

Sujet résolu
    19 septembre 2014 à 8:52:53

    Hello La communauté :)

    Je vous solicite car je m'arrache les cheveux depuis quelques jours sur un petit script.

    J'ai ai script qui réalise un graph(avec rrdtool) de temperature. 

    Lorsque je le lance en ligne de commande aucun probleme, la valeur est bien ajouter a la base de donnéee rrd et le graph s'affiche correctement.

    Mais lorsque ce meme programme est éxécuté via le crontab ... Pas de valeur ajoutée mais le graph est créé...

    Je dois passer a cote de quelque chose mais je sais pas de quoi...

    En cherchant à droite et à gauche j'ai reussi a faire le code py suivant:

    #!/usr/bin/env python
    
    import sys 
    sys.path.insert(0,'/var/www/rrd')
    import time
    import os
    
    line = 25
    interval = 2
    rrd_file = '/var/www/rrd/test.rrd'
               
    my_rrd = rrd.RRD(rrd_file)
    cur_date = time.strftime('%m/%d/%Y %H/%M/%S', time.localtime())       
    
    file_object=open(file_name,'r')
    line=file_object.read()
    line=line.strip()
    file_object.close
    print cur_date + " temp: " + line
    
    cmd_update = 'rrdtool update %s N:%s' % (rrd_file, line)
    cmd = os.popen4(cmd_update)
    cmd_output = cmd[1].read()
    print cmd_update
    print cmd_output
    print "update done"
    
    
    start_time = 'now-3600'
    cmd_graph= 'rrdtool graph essai.png -a PNG --title="essai" ' + \
    	'DEF:test=test.rrd:test:AVERAGE ' + \
    	'LINE2:test#0000FF' +\
    	' --start=' + start_time + \
    	' --end=now' + \
    	' VDEF:testlast=test,LAST' + \
        ' COMMENT:"' + cur_date + '"' + \
        ' --width=600 ' + \
        ' --height=400 '
    cmd = os.popen4(cmd_graph)
    cmd_output = cmd[1].read()
    print cmd_graph
    print cmd_output
    
    
    print "graph done"
        
    

    Et voici le cronjob :

    */1 * * * * /var/rrd/rrd.py >> test.log

    J'avoue le code n'est pas joli joli mais c'est un essai (pour l'instant non concluant malheureusement)

    Si une personne a une idée.

    Tout les fichiers sont dans le meme repertoire et ont un chmod 777.

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 septembre 2014 à 9:01:56

      Pourquoi ne pas utiliser une API pour créer des rrd files ?

      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2014 à 10:31:59

        Que contient ton fichier de log ?

        Tu devrais logger également tes erreurs dans le fichier : /var/rrd/rrd.py >> test.log 2>&1.

        • Partager sur Facebook
        • Partager sur Twitter
        Zeste de Savoir, le site qui en a dans le citron !
          19 septembre 2014 à 12:47:09

          @oldprogrammer : Au debut je passais par un import de rrs.py ou il y avait la class create, update et graph... Mais comme ca marchait pas non plus, je suis allé au plus simple pour essayer de trouver la cause.

          @Nohar : voici mon log (3 dernieres lignes)

          09/19/2014 10/44/01 temp: 23
          rrdtool update /var/www/rrd/test.rrd N:23
          
          update done
          rrdtool graph essai.png -a PNG --title="essai" DEF:test=test.rrd:test:AVERAGE LINE2:test#0000FF --start=now-3600 --end=now VDEF:testlast=test,LAST COMMENT:"09/19/2014 10/44/01" --width=600  --height=400 
          681x473
          
          graph done
          09/19/2014 10/45/02 temp: 23
          rrdtool update /var/www/rrd/test.rrd N:23
          
          update done
          rrdtool graph essai.png -a PNG --title="essai" DEF:test=test.rrd:test:AVERAGE LINE2:test#0000FF --start=now-3600 --end=now VDEF:testlast=test,LAST COMMENT:"09/19/2014 10/45/02" --width=600  --height=400 
          681x473
          
          graph done
          09/19/2014 10/46/01 temp: 23
          rrdtool update /var/www/rrd/test.rrd N:23
          
          update done
          rrdtool graph essai.png -a PNG --title="essai" DEF:test=test.rrd:test:AVERAGE LINE2:test#0000FF --start=now-3600 --end=now VDEF:testlast=test,LAST COMMENT:"09/19/2014 10/46/01" --width=600  --height=400 
          681x473
          
          graph done

          Pour log des erreurs je ferais ca ce soir je n'ai pas acces du bureau :s

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            19 septembre 2014 à 13:02:51

            @oldprogrammer : Au debut je passais par un import de rrs.py ou il y avait la class create, update et graph... Mais comme ca marchait pas non plus, je suis allé au plus simple pour essayer de trouver la cause.

            Tu aurais dû insister en posant une question sur ce forum, en lisant la documentation, je pense qu'on s'en serait sorti

            • Partager sur Facebook
            • Partager sur Twitter
              20 septembre 2014 à 13:27:21

              @nohar : J'ai rajouté le 2>&1 pour avoir les erreurs mais il n'affiche aucune...
              Toujours le meme log...

              @oldprogrammer :  Voici ce que j'ai utilisé au départ comme class:

              http://coreygoldberg.blogspot.de/2008/05/python-rrdpy-round-robin-databases.html 

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                20 septembre 2014 à 16:08:56

                Voici ce que j'ai utilisé au départ comme class

                Si tu dis pas l'erreur... Pourquoi ça fonctionnait pas ?

                • Partager sur Facebook
                • Partager sur Twitter
                  20 septembre 2014 à 23:21:18

                  Justement c'est bien la le probleme ... Il n'affiche aucune erreur !!!

                  D'apres le log, tout fonctionne correctement... 

                  Mais je n'ai toujours aucunes valeurs qui s'enregistrent a partir du cron. Mais par contre il m'affiche bien le graph(vide ...)

                  Par contre quand je le lance manuellement, il enregistre bien une valeur.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 septembre 2014 à 22:36:14

                    News :

                    J'ai essayé de mettre a jour directement depuis le cron une valeur fixe, c'est vraiment la ligne rrdtool update quine veut pas etre pris en compte dans le crontab...

                    ligne de commande crontab :

                    */1 * * * * rrdtool update test.rrd N:25

                    Je vais bientot plus avoir de cheveux a force de me les arracher :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 septembre 2014 à 11:07:17

                      Y'aurait pas un bête problème de droits et d'utilisateur ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Zeste de Savoir, le site qui en a dans le citron !
                        22 septembre 2014 à 11:44:59

                        @nohar: je pense aussi à ce pb...  J ai mis les droits 777 sur la db.  Je lance en sudo rrdtool mais tjs rien... Il faudrait mettre les droits sur un autre ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 septembre 2014 à 1:53:56

                          Pas terrible à long terme mais est-ce que tu as essayé de mettre cette ligne dans le crontab de root ? Comme ça pour les droits on serait fixé. ("sudo su" puis "crontab -e" puis tu copies la ligne dans l'éditeur et tu sauvegardes)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 septembre 2014 à 10:50:09

                            Les droits 777 sur l'exécutable ne sont pas une bonne solution. Si ça se trouve rrd utilise un mécanisme pour que seul les membres d'un groupe précis puissent interagir avec la BDD, peu importe les droits sur l'exécutable.

                            Essaye en root pour voir.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Zeste de Savoir, le site qui en a dans le citron !
                              25 septembre 2014 à 23:11:23

                              En root, ca donnait la meme chose...

                              J'ai trouvé le pb, ce n'etait pas un probleme du aux droits... mais au Heartbeat et au step de la db.

                              Il faut les régler en fonction de l'intervalle de mesure.

                              Le pb est résolu !!! Merci pour vos conseils !!! 

                              Open classroom est un site vraiment super ;)

                              @ bientot

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Pb avec script Python et Crontab...

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown