Ftp python

13 réponses
Avatar
bmil
bonjour ,

Un script python ftp.py est actif en mode console .
Dans un crontab la commande n'exécute pas le script .
Quel dépendance un cron ne peut pas interpréter avec py ?

def go_ftp():
ftp = ftplib.FTP("**********")
ftp.login("************")
ftp.cwd('*************')
fichier = read_date()
# print "fic : "+fichier
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é"

print(go_ftp())

10 réponses

1 2
Avatar
Laurent Pointal
bmil wrote:

bonjour ,

Un script python ftp.py est actif en mode console .
Dans un crontab la commande n'exécute pas le script .
Quel dépendance un cron ne peut pas interpréter avec py ?

def go_ftp():
ftp = ftplib.FTP("**********")
ftp.login("************")
ftp.cwd('*************')
fichier = read_date()
# print "fic : "+fichier
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é"

print(go_ftp())



Essaie de faire un bête script shell lancé par cron, qui t'enregistre dans
un fichier le contenu de $PATH et consort.

Genre set > /tmp/environnement.txt

Histoire de voir déjà si Python est accessible dans cet environnement.

--
Laurent POINTAL -
Avatar
bmil
Le 27/04/2014 12:47, Laurent Pointal a écrit :
bmil wrote:

bonjour ,

Un script python ftp.py est actif en mode console .
Dans un crontab la commande n'exécute pas le script .
Quel dépendance un cron ne peut pas interpréter avec py ?

def go_ftp():
ftp = ftplib.FTP("**********")
ftp.login("************")
ftp.cwd('*************')
fichier = read_date()
# print "fic : "+fichier
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é"

print(go_ftp())



Essaie de faire un bête script shell lancé par cron, qui t'enregistre dans
un fichier le contenu de $PATH et consort.

Genre set > /tmp/environnement.txt

Histoire de voir déjà si Python est accessible dans cet environnement.


-----------------------------------------------------------------------------
OK - J'ai fais pas mal de manip et un post non résolu est ici :

http://www.developpez.net/forums/d1435216/autres-langages/python-zope/script-python-ftp-crontab/
Avatar
Laurent Pointal
bmil wrote:

<zip>
-----------------------------------------------------------------------------
OK - J'ai fais pas mal de manip et un post non résolu est ici :

http://www.developpez.net/forums/d1435216/autres-langages/python


zope/script-python-ftp-crontab/

Désolé, je n'ai pas de compte developpez.

Essaie de mettre le chemin complet vers Python au niveau de la crontab.

Et comme indiqué par une personne (et conseillé dans la doc ubuntu par
exemple), avoir un système d'envoi d'emails minimum permet de récupérer les
indications d'erreur de cron.

http://doc.ubuntu-fr.org/cron
=> NOTA IMPORTANT: Dans le cas où votre crontab refuserait de s'exécuter,
vérifiez que vous disposez bien du package mailutils. En effet, cron logue
ses actions en envoyant un mail à l'utilisateur courant.



--
Laurent POINTAL -
Avatar
bmil
Le 27/04/2014 15:35, Laurent Pointal a écrit :
bmil wrote:

<zip>
-----------------------------------------------------------------------------
OK - J'ai fais pas mal de manip et un post non résolu est ici :

http://www.developpez.net/forums/d1435216/autres-langages/python


zope/script-python-ftp-crontab/

Désolé, je n'ai pas de compte developpez.

Essaie de mettre le chemin complet vers Python au niveau de la crontab.

Et comme indiqué par une personne (et conseillé dans la doc ubuntu par
exemple), avoir un système d'envoi d'emails minimum permet de récupérer les
indications d'erreur de cron.

http://doc.ubuntu-fr.org/cron
=> NOTA IMPORTANT: Dans le cas où votre crontab refuserait de s'exécuter,
vérifiez que vous disposez bien du package mailutils. En effet, cron logue
ses actions en envoyant un mail à l'utilisateur courant.


-----------------------------------------------------------------
#! /usr/bin/python
# -*- coding: utf-8 -*-

import ftplib

ftp = ftplib.FTP("*********")
ftp.login("************")

ftp.cwd('**********')
ftp.retrlines('LIST')

###### c'est la déclaration en local du fichier qui bloque
le package mailutils renvoi en log ceci :
Traceback (most recent call last):
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration
Avatar
Th.A.C
Le 27/04/2014 16:14, bmil a écrit :
...
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration



tu n'es pas dans le bon dossier quand c'est la tache cron qui s'exécute?
Avatar
bmil
Le 27/04/2014 18:06, Th.A.C a écrit :
Le 27/04/2014 16:14, bmil a écrit :
...
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration



tu n'es pas dans le bon dossier quand c'est la tache cron qui s'exécute?



-------------------------------------------------------------------------

Ce que veut python n'est pas clair - Avec un cron sur php , la data
passent par ftp dans les 2 sens ..
Avatar
Laurent Pointal
bmil wrote:

Le 27/04/2014 18:06, Th.A.C a écrit :
Le 27/04/2014 16:14, bmil a écrit :
...
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration



tu n'es pas dans le bon dossier quand c'est la tache cron qui s'exécute?



-------------------------------------------------------------------------

Ce que veut python n'est pas clair - Avec un cron sur php , la data
passent par ftp dans les 2 sens ..



Fais un test en mettant le chemin complet à l'ouverture du fichier:

file = open(os.path.join(repertoire, fichier), 'rb)

Note: pour connaître le répertoire courant: os.getcwd()

--
Laurent POINTAL -
Avatar
bmil
On 27/04/2014 19:48, Laurent Pointal wrote:
bmil wrote:

Le 27/04/2014 18:06, Th.A.C a écrit :
Le 27/04/2014 16:14, bmil a écrit :
...
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration



tu n'es pas dans le bon dossier quand c'est la tache cron qui s'exécute?



-------------------------------------------------------------------------

Ce que veut python n'est pas clair - Avec un cron sur php , la data
passent par ftp dans les 2 sens ..



Fais un test en mettant le chemin complet à l'ouverture du fichier:

file = open(os.path.join(repertoire, fichier), 'rb)

Note: pour connaître le répertoire courant: os.getcwd()


----------------------------------------------------------------------------

ok - mon appli fonctionnement avec php - je ferai quelques essais sur py
et son cron . Le problème des scripts py plus courts c'est pour gagner
en rapidité mais au niveau développement le temps perdu sur une ligne
qui foire ne se rattrape pas .
Avatar
bmil
Le 27/04/2014 20:38, bmil a écrit :
On 27/04/2014 19:48, Laurent Pointal wrote:
bmil wrote:

Le 27/04/2014 18:06, Th.A.C a écrit :
Le 27/04/2014 16:14, bmil a écrit :
...
IOError: [Errno 2] No such file or directory: 'qcm.pdf'
###########################

fichier = "qcm.pdf"
file = open(fichier, 'rb') # ici, j'ouvre le fichier ftp.py
ftp.storbinary('STOR '+fichier, file) # j'indique le fichier à
envoyer

--------------------------------
Le mode console lit bien >> fichier = "qcm.pdf"
Le mode cron ne prend pas en compte cette déclaration



tu n'es pas dans le bon dossier quand c'est la tache cron qui
s'exécute?



-------------------------------------------------------------------------


Ce que veut python n'est pas clair - Avec un cron sur php , la data
passent par ftp dans les 2 sens ..



Fais un test en mettant le chemin complet à l'ouverture du fichier:

file = open(os.path.join(repertoire, fichier), 'rb)

Note: pour connaître le répertoire courant: os.getcwd()


----------------------------------------------------------------------------


ok - mon appli fonctionnement avec php - je ferai quelques essais sur py
et son cron . Le problème des scripts py plus courts c'est pour gagner
en rapidité mais au niveau développement le temps perdu sur une ligne
qui foire ne se rattrape pas .


----------------------------------------------

La synthax >> file = open(os.path.join(repertoire, fichier), 'rb)
est en error en mode shell python

C'est le cron qui commande en partie ftp_1.py et qui ne veut pas ouvrir
file .
Avec repertoire = os.getcwd() , le cron affiche l'erreur de synthax du shell
Avatar
Doug713705
Le 28-04-2014, bmil nous expliquait dans
fr.comp.lang.python
(<535e0c84$0$2128$) :

La synthax >> file = open(os.path.join(repertoire, fichier), 'rb)
est en error en mode shell python



Il manque la simple quote de fermeture de rb:
file = open(os.path.join(repertoire, fichier), 'rb')

--
Oh mais laisse allumé bébé, y'a personne au contrôle
Et les dieux du radar sont tous out
Et toussent et se touchent et se poussent
Et se foutent et se broutent
-- H.F. Thiéfaine, Mathématiques souterraines
1 2