Hello
J'essaye de connecter mon programme micropython qui tourne sur mon Raspberry Pi Pico à un serveur FTP Filezilla Server installer sur un PC distant en FTP_TLS
J'utilise les bibliothèques ftplib.py et ftplibtls.py mais qui sont écrites pour ESP
J'arrive a me logger et a m'authentifier :
Mais j'ai le message : 150 Starting data transfer et puis plus rien d'autre.
J'ai vérifié mes autorisations de pare-feu sur mon serveur (j'ai essayé sans pare-feu aussi)
Je suis en mode Passif
Mais je n'arrive pas à lire le contenu du répertoire sur mon serveur avec le code suivant :
```
def retrlines(self, cmd, callback=None):
"""Retrieve data in line mode.
A new port is created for you.
Args:
cmd: A RETR, LIST, or NLST command.
callback: An optional single parameter callable that is called
for each line with the trailing CRLF stripped.
[default: print]
Returns:
The response code.
"""
if callback is None:
callback = print
self.sendcmd('TYPE A')
print("========= retrlines - ftplib : cmd : ", cmd)
with self.ntransfercmd(cmd)[0] as conn:
print("========= retrlines - ftplib : OK ")
data = conn.recv(1024) # Lire 1024 octets du socket (ajustez la taille selon vos besoins)
print("========= retrlines - ftplib : conn (raw data):", data)
if hasattr(conn, 'makefile'):
print("========= retrlines - ftplib : makefile ")
fp = conn.makefile('rb')
print("========= retrlines - ftplib : makefile (suite)")
else:
fp = conn._sock
n = 1
while True:
print("========= retrlines - ftplib : while true => " , n)
n = n+1
line = fp.readline(MAXLINE + 1).decode()
print("========= retrlines - ftplib : line : ", line)
if not line:
print("========= retrlines - ftplib : not line ")
break
if len(line) > MAXLINE:
raise Error("got more than %d bytes" % MAXLINE)
if self.debugging > 2:
print('*retr*', repr(line))
if line[-2:] == CRLF:
line = line[:-2]
elif line[-1:] == '\n':
line = line[:-1]
callback(line)
print("========= retrlines - ftplib : while false")
# shutdown ssl layer
if _SSLSocket is not None and isinstance(conn, _SSLSocket):
conn.unwrap()
fp.close()
print("========= retrlines - ftplib : close")
return self.voidresp()
items = []
ftp_conn.retrlines("LIST",items.append)
```
En fait, c'est cette commande qui bloque : data = conn.recv(1024) # Lire 1024 octets du socket (ajustez la taille selon vos besoins)
Et je n'ai pas plus d'informations
Quelqu'un pourrait il m'aider ?
Pour rappel, je travaille avec un Raspberry Pi Pico WH (RP2040) avec le Micropython version 1.22.0
Merci d'avance
Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique
Message 150 Starting data transfer et puis plus rien d'autre
Forum rules
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).
Merci de suivre les recommandations suivantes.
Pensez à:
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).
Merci de suivre les recommandations suivantes.
Pensez à:
- Titre claire: permettant d'identifier le produit et le problème
- Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
- Fichier joint: Max 300 Ko
- Courtoisie et précision
Re: Message 150 Starting data transfer et puis plus rien d'autre
Bonjour Fuz20,
Très ambitieux comme utilisation du Pico (faudrait que tu donne un lien vers les sources).
Voici quelques pistes:
1) As tu essayé avec un client ftp en ligne de commande ? (histoire de voir si tu arrive à avoir la réponse attendue)
2) As tu beaucoup de fichiers dans ton répertoire ftp? voire aucun? (ce sont deux cas particuliers qui pourraient bien faire sauter du code).
3) `data = conn.recv(1024)` et s'il y a moins de 1024 octets ? de combien est le timeout ?
Cordialement,
Dominique
Très ambitieux comme utilisation du Pico (faudrait que tu donne un lien vers les sources).
Voici quelques pistes:
1) As tu essayé avec un client ftp en ligne de commande ? (histoire de voir si tu arrive à avoir la réponse attendue)
2) As tu beaucoup de fichiers dans ton répertoire ftp? voire aucun? (ce sont deux cas particuliers qui pourraient bien faire sauter du code).
3) `data = conn.recv(1024)` et s'il y a moins de 1024 octets ? de combien est le timeout ?
Cordialement,
Dominique
Dominique, MC Hobby.