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 :

Crontab et encodage python


Sujet :

Python

  1. #1
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut Crontab et encodage python
    bonjour

    J'ai un problème de cron qui ne passe pas la commande . Postfix envoi la différence sur pc1 et pc2 .
    Comment sous python faire une maj pour obtenir le même postfix et débloquer ce cron ( pc1 ) ?

    Cron pc1 ( bloqué ) :

    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
    From pi@raspberrypi  Mon Apr 28 16:34:03 2014
    Return-Path: <pi@raspberrypi>
    X-Original-To: pi
    Delivered-To: pi@raspberrypi
    Received: by raspberrypi (Postfix, from userid 1000)
    	id D845321415; Mon, 28 Apr 2014 16:34:02 +0200 (CEST)
    From: root@raspberrypi (Cron Daemon)
    To: pi@raspberrypi
    Subject: Cron <pi@raspberrypi> python /home/pi/ftp_1.py  
    Content-Type: text/plain; charset=UTF-8
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/home/pi>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=pi>
    Message-Id: <20140428143402.D845321415@raspberrypi>
    Date: Mon, 28 Apr 2014 16:34:02 +0200 (CEST)
     
    Traceback (most recent call last):
      File "/home/pi/ftp_1.py", line 34, in <module>
        print(go_ftp())
      File "/home/pi/ftp_1.py", line 27, in go_ftp
        file = open(fichier, 'rb') # ici, j'ouvre le fichier 
    IOError: [Errno 2] No such file or directory: 't25_04.csv'
    Cron pc2 :

    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
    From ubuntu@ubuntu-A7N8X2-0  Mon Apr 28 16:12:02 2014
    Return-Path: <ubuntu@ubuntu-A7N8X2-0>
    X-Original-To: ubuntu
    Delivered-To: ubuntu@ubuntu-A7N8X2-0
    Received: by ubuntu-A7N8X2-0 (Postfix, from userid 1000)
    	id 62ACB5FDE; Mon, 28 Apr 2014 16:12:02 +0200 (CEST)
    From: root@ubuntu-A7N8X2-0 (Cron Daemon)
    To: ubuntu@ubuntu-A7N8X2-0
    Subject: Cron <ubuntu@ubuntu-A7N8X2-0> python /home/ubuntu/ftp_1.py
    Content-Type: text/plain; charset=ANSI_X3.4-1968
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/home/ubuntu>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=ubuntu>
    Message-Id: <20140428141202.62ACB5FDE@ubuntu-A7N8X2-0>
    Date: Mon, 28 Apr 2014 16:12:02 +0200 (CEST)
     
    Transfert fichier ...
    Terminé
    None

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par bm Voir le message
    J'ai un problème de cron qui ne passe pas la commande . Postfix envoi la différence sur pc1 et pc2. Comment sous python faire une maj pour obtenir le même postfix et débloquer ce cron ( pc1 ) ?
    L'erreur est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "/home/pi/ftp_1.py", line 34, in <module>
        print(go_ftp())
      File "/home/pi/ftp_1.py", line 27, in go_ftp
        file = open(fichier, 'rb') # ici, j'ouvre le fichier 
    IOError: [Errno 2] No such file or directory: 't25_04.csv'
    Ca dit seulement que le fichier 't25_04.csv' n'existe pas là où il s'attend à le trouver.
    D’où ça vient? Certainement pas de Python.

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

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si tu pouvais montrer le code qui tourne sur le raspberry, ce n'est pas normal que le nom de fichier ne comporte pas le chemin.

    Du moins pour un code qui tourne dans l'environnement de cron, comme j'ai expliqué dans un autre fil.

  4. #4
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fichier = 't25_04.csv'
        # fichier = read_date()
        # print "fic : "+fichier
        # file = open(os.path.join(repertoire, fichier), 'rb')
        file = open(fichier, 'rb') # ici, j'ouvre le fichier 
        ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer
        ftp.quit()
        file.close()
        print "Transfert fichier ..."
        print "Terminé"
    C'est un problème de droit d'exécution sur le fichier py ( ftp_1.py )

    cas 1 : Dans /home/pi du raspberry pi :
    ftp_1.py est en rwx
    t25_04.csv en r

    CRON est correct

    cas 2 : Dans /home/...../avri du raspberry pi :
    ftp_1.py est en rwx
    t25_04.csv en r

    CRON est en erreur

    Question : Comment vérifier la validité du chemin vers le fichier ?

    Avec d'autres fichiers : t1_04.csv , t2_04.csv .. t5_04.csv ( cas 1 ) >> c'est bon
    Les mêmes en cas 2 : plantage général



    Même en donnant des droits avec un chmod , le plantage continu :

    chmod -R a+rwx home/....../avri

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    L'hypothèse de VinsS est qu'il faut mettre le nom du chemin complet. Mais cron devrait fonctionner pareil dans les 2 cas ou être configuré différemment. Ajouter des lignes dans le code pour pallier cela est assez moyen.

    Il serait peut être utile d'ajouter un entrée du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * echo “test $(date) $(pwd)” >> /tmp/test.txt
    dans la crontab.

    Cela permettrait de savoir quel est le répertoire "par défaut".

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

  6. #6
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Courant donne : /home/pi

    Ensuite comment quitter ce dossier courant pour aller plus loin ?
    Est ce bridé définitivement ?

    Pour info , un cron sur un ftp avec php , va bien chercher les fichiers dans home/...../avri
    Merci pour l'aide et les conseils , mais c'est python et sa rigidité qui est inquiétante !!


  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Non, ce n'est pas bridé, pour l'expérience que j'ai de cron, il faut mettre le chemin complet sinon ça ne passe pas.

    Le chemin complet pour "file = open(fichier, 'rb') " et le nom de fichier seul pour "ftp.storbinary('STOR '+fichier, file)"

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par bm Voir le message
    Courant donne : /home/pi

    Ensuite comment quitter ce dossier courant pour aller plus loin ?
    Est ce bridé définitivement ?

    Pour info , un cron sur un ftp avec php , va bien chercher les fichiers dans home/...../avri
    Merci pour l'aide et les conseils , mais c'est python et sa rigidité qui est inquiétante !!

    Si pwd retourne /home/pi et que le fichier est dans le s/répertoire avri, accéder au fichier demanderait plutôt
    un nom de la forme "avri/t25_04.csv".

    Citation Envoyé par VinsS
    Non, ce n'est pas bridé, pour l'expérience que j'ai de cron, il faut mettre le chemin complet sinon ça ne passe pas.

    Le chemin complet pour "file = open(fichier, 'rb') " et le nom de fichier seul pour "ftp.storbinary('STOR '+fichier, file)"
    Le chemin complet "fonctionne" puisqu'absolu.
    Mais c'est tellement dommage: normalement cron travaille par défaut dans le "home" de l'utilisateur.

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

  9. #9
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    fichier = 't25_04.csv'
    # fichier = read_date()
    # print "fic : "+fichier
    # file = open(os.path.join(repertoire, fichier), 'rb')
    file = open(fichier, 'rb') # ici, j'ouvre le fichier
    ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

    Le chemin complet pour "file = open(fichier, 'rb') " et le nom de fichier seul pour "ftp.storbinary('STOR '+fichier, file)"

    Cela donne :

    file = open('/home/.../avri/t25_04.csv', 'rb') # ici, j'ouvre le chemin + fichier
    ftp.storbinary('STOR '+'t25_04.csv', file) # j'indique le fichier seul à envoyer

    Voilà c'est bon avec un shell python et avec un cron classique

    [ RESOLU ]

  10. #10
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Dans le /home c'est possible, mais dans le cas présent il y a encore du chemin.

    Ce n'est pas Python qui est rigide, simplement il tourne dans l'environnement de cron.

    Et, pour rappel, il faut que le chemin soit totalement ascii sinon modifie la commande cron comme je t'ai indiqué dans l'autre fil.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2014, 23h43
  2. encodage en python
    Par anna1980 dans le forum Général Python
    Réponses: 2
    Dernier message: 09/06/2008, 23h03
  3. Encodage python sqlite
    Par olaxius dans le forum Général Python
    Réponses: 1
    Dernier message: 01/11/2006, 22h28
  4. [File] comment python gere les encodage?
    Par anthyme dans le forum Général Python
    Réponses: 3
    Dernier message: 03/10/2006, 20h39
  5. Problème d'encodage avec Python
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 22/02/2006, 14h36

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