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

Shell et commandes GNU Discussion :

Problème python dans script shell et cron


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Problème python dans script shell et cron
    Bonjour,
    je ne sais pas si je suis au bon endroit mais voilà, je suis coincé sur un point et mon ami google ne m'a pas apporté beaucoup de réponses.
    J'ai créer un script shell "met.sh" dans lequel se trouve des lignes où je lance des scripts python.
    Quand j'exécute dans ma console le script :
    Tout fonctionne.
    Bon, le problème vient quand je veux l’exécuter automatiquement par cron : tout le script fonctionne SAUF le lancement des scripts python !
    Voici un bout de mon script :
    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
    #!/bin/sh
    ...
     
    #Récupération des températures
    /usr/bin/php5 /home/valentin/appli/test/donnee/Temp.php
    /usr/bin/php5 /home/valentin/appli/test/donnee/buoy.php
     
    #execution du script pyhton
    /usr/bin/python /home/valentin/appli/python/Temperature.py
    /usr/bin/python /home/valentin/appli/python/Dewpoint.py
    /usr/bin/python /home/valentin/appli/python/Pression.py
    /usr/bin/python /home/valentin/appli/python/ventbarbule.py
    /usr/bin/python /home/valentin/appli/python/ventisobare.py
    /usr/bin/python /home/valentin/appli/python/Humidex.py
    /usr/bin/python /home/valentin/appli/python/Humidite.py
    /usr/bin/python /home/valentin/appli/python/Windchill.py
    ...
    et voici ma ligne crontab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    05,35 * * * * /home/valentin/appli/test/donnee/met.sh
    J'ai remarqué également que si je mettais également mes scripts pythons dans crontab, ça ne marchais pas non plus.
    D'où vient la faille ?

    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    au pif : dans les scripts en python, des chemins ne sont pas complets

    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,
    merci de te soucier de mon problème ,
    je crois que les chemins sont correctement écrits :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from mpl_toolkits.basemap import Basemap, cm
    import matplotlib.pyplot as plt
    import matplotlib.colors as mcolors
    from scipy.interpolate import griddata
    import numpy as np
    import codecs
    x=[]
    y=[]
    z=[]
    #import des données
    Fichier = '/home/valentin/appli/test/donnee/temperature.txt' 
    Table=np.loadtxt(Fichier)
    Table=np.array(Table)
    for i in range((len(Table))): 
        x.append(Table[i][1]) # coord x
        y.append(Table[i][2]) # coord y
        z.append(Table[i][0]) # carte de température
     
    #date et heure de la carte
    jour=np.str(np.int(Table[1,3]))
    mois=np.str(np.int(Table[1,4]))
    annee=np.str(np.int(Table[1,5]))
    heure=np.str(np.int(Table[1,6]))
    minute=np.str(np.int(Table[1,7]))
    if minute == "0":
     minute="00"
    lon=np.array(x)
    lat=np.array(y)
    z=np.array(z) 
    zint=[]
    for i in range((len(z))):
        zint.append(int(z[i]))
    #Création de la carte de France
    ...
    #Lecture shapefile
    shp='/home/valentin/modeles/wrfems/util/grads/data/FRA_adm2'
    m.readshapefile(shp,'departement')
    ...
     
    plt.savefig('/home/valentin/appli/web/cartesmetar/Francetemperature.png',bbox_inches='tight',dpi=150)

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    malheureusement, je ne connais pas le python.

    peut-être des variables d'environnement vers les librairies devraient-elles être exportées depuis les scripts shell, afin qu'elles soient accessibles depuis les scripts en python

    ?

    n'y a-t-il pas moyen, en python, de savoir ce qu'il se passe lors de l'exécution d'un script, comme en shell on utilise set -x ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    peut-être des variables d'environnement vers les librairies devraient-elles être exportées depuis les scripts shell, afin qu'elles soient accessibles depuis les scripts en python
    En fait aucun script python ne marche directement avec Cron sur mon PC.
    si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
    [GCC 4.6.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from mpl_toolkits.basemap import Basemap, cm
    >>> import matplotlib.pyplot as plt
    >>> import matplotlib.colors as mcolors
    >>> from scipy.interpolate import griddata
    >>> import numpy as np
    >>> import codecs
    >>> import os
     
    >>> os.environ['PATH']
    '/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
    et dans mon shell (ainsi que dans mon fichier CRONTAB) j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $PATH
    /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    Y-a-til des spécialistes Python ou Crontab dans la salle ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,
    j'ai essayé de rajouter au début d'un script python ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sys
    sys.stdout = open("/home/valentin/appli/python/out.txt","w")
    sys.stderr = open("/home/valentin/appli/python/err.txt","w")
    Je lance mon Cron et j'obtiens mon fichier err.txt. Le voici :
    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
    Traceback (most recent call last):
      File "/home/valentin/appli/python/Pression.py", line 40, in <module>
        m.drawcountries(linewidth=1)
      File "/usr/local/lib/python2.7/dist-packages/mpl_toolkits/basemap/__init__.py", line 1535, in drawcountries
        ax = ax or self._check_ax()
      File "/usr/local/lib/python2.7/dist-packages/mpl_toolkits/basemap/__init__.py", line 3689, in _check_ax
        ax = plt.gca()
      File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 593, in gca
        ax =  gcf().gca(**kwargs)
      File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 292, in gcf
        return figure()
      File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 270, in figure
        **kwargs)
      File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
        window = Tk.Tk()
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1688, in __init__
        self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
    _tkinter.TclError: no display name and no $DISPLAY environment variable
    Ça doit être un problème de variable d'environnement ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Ça y est !!!!!!!!!!!
    Je crois avoir trouvé, il suffit de rajouter avant l'appel de pyplot ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import matplotlib
    matplotlib.use('Agg')
    Et le script se lance, il n'y a plus d'erreur.
    Voici le lien qui m' a aidé : http://stackoverflow.com/questions/4...nning-x-server
    Par contre, aucune idée de ce problème, et c'est bizarre que je semble être le seul dans ce cas ??

Discussions similaires

  1. problème apache via script shell
    Par splifferwolf dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/11/2008, 11h53
  2. problème de compréhension script shell
    Par poupouce5 dans le forum Linux
    Réponses: 1
    Dernier message: 27/05/2008, 12h19
  3. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54
  4. Passwd dans script shell
    Par Caroux dans le forum Linux
    Réponses: 4
    Dernier message: 30/05/2006, 12h47
  5. [PHP-JS] Problème accents dans script PHP
    Par zigor dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2006, 18h45

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