Topic: [risolto] non riesco a inviare file su Altervista con ftplib  (Letto 215 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Salve a tutti.

non riesco ad inviare un file di testo (creato per prova) via ftplib su un sito di altervista.

il codice usato è il seguente:


import os
import ftplib

session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')


nomefile="/home/pi/test.txt"

session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)




L'errore è


Traceback (most recent call last):
  File "/mnt/usbhd/prove/ProvaFTP.py", line 58, in <module>
    session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
  File "/usr/lib/python3.4/ftplib.py", line 503, in storbinary
    with self.transfercmd(cmd, rest) as conn:
  File "/usr/lib/python3.4/ftplib.py", line 398, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python3.4/ftplib.py", line 364, in ntransfercmd
    resp = self.sendcmd(cmd)
  File "/usr/lib/python3.4/ftplib.py", line 272, in sendcmd
    return self.getresp()
  File "/usr/lib/python3.4/ftplib.py", line 245, in getresp
    raise error_perm(resp)
ftplib.error_perm: 553 Impossibile aprire quel file: File o directory non esistente


Ho controllato e il file è nella posizione giusta e possiede tutti i permessi:  "-RWXRWXRWX"

con un file di bash riesco a mandare il file con il seguente codice:


#!/bin/bash
/usr/bin/ftp -inv rpiplant.altervista.org <<ENDFTP


user rpiplant *********

bin

#provo a inviare un file di testo in pi/home
lcd /home/pi
put test.txt test1.txt



ho provato anche a sostituire session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********') con session=ftplib.FTP('ftp://rpiplant.altervista.org','rpiplant','**********')

e mi dà il seguente errore:

Codice: Seleziona tutto
Traceback (most recent call last):
  File "/mnt/usbhd/prove/ProvaFTP.py", line 51, in <module>
    session=ftplib.FTP('ftp://rpiplant.altervista.org','rpiplant','aPQq7jNJpWzS')
  File "/usr/lib/python2.7/ftplib.py", line 120, in __init__
    self.connect(host)
  File "/usr/lib/python2.7/ftplib.py", line 135, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "/usr/lib/python2.7/socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno -2] Name or service not known




Dove sbaglio?

Grazie per l'attenzione

Un saluto

LaPa
« Ultima modifica: Novembre 15, 2018, 23:09 da LaPa »

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 289
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #1 il: Novembre 03, 2018, 17:35 »
Ciao prova con:
ftp.xxxxxx.altervista.org

poi se metti un try, except sia sulla riga 4 che sulla 9 così vediamo dove sta il problema.

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #2 il: Novembre 04, 2018, 00:17 »
Ciao prova con:
ftp.xxxxxx.altervista.org



poi se metti un try, except sia sulla riga 4 che sulla 9 così vediamo dove sta il problema.
ho provato ftp.xxxxxx.altervista.org e non funziona.   ;(

Per quanto riguarda il try, except non saprei come applicarlo  :confused:


Saluti

LaPa

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 289
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #3 il: Novembre 04, 2018, 01:33 »

try:
    session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')
except Exception as e:
    print("errore 1:", e)

nomefile="/home/pi/test.txt"

try:
    session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
except Exception as e:
    print("errore 2:", e)

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #4 il: Novembre 04, 2018, 12:56 »

try:
    session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')
except Exception as e:
    print("errore 1:", e)

nomefile="/home/pi/test.txt"

try:
    session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
except Exception as e:
    print("errore 2:", e)


Grazie per l'aiuto,

Stavo studiando sui miei manuali per principianti la sintassi di try ed except ma non sarei arrivato a scrivere "except Exception as e"

comunque il risultato del tuo codice e' il seguente:

('errore 2:', error_perm('553 Impossibile aprire quel file: File o directory non esistente',))


Premetto che il file e' in quella posizione e si chiama test.txt, controllato anche con il comando "ls -l" daterminale, inoltre possiede tutti i permessi: "-rwxrwxrwx".

Grazie

Saluti

LaPa












Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 289
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #5 il: Novembre 05, 2018, 07:27 »
Prova:


try:
    f =  open (nomefile, "rb")
except Exception as e:
    print("errore 1:", e)

try:
    session.storbinary("STOR " + nomefile, f)
except Exception as e:
    print("errore 2:", e)


E poi, hai provato a eseguirlo con sudo?
Le informazioni con stat che permessi ti danno sul file per verificare se te li ha cambiati effettivamente?

Offline barbezuan

  • python habilis
  • **
  • Post: 55
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #6 il: Novembre 05, 2018, 22:59 »
Scusate, forse ricordo male, ma il 553 non è un errore che arriva dal ricevente?

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #7 il: Novembre 05, 2018, 23:20 »
Prova:


try:
    f =  open (nomefile, "rb")
except Exception as e:
    print("errore 1:", e)

try:
    session.storbinary("STOR " + nomefile, f)
except Exception as e:
    print("errore 2:", e)

Ho provato: questo:

session=ftplib.FTP('rpiplant.altervista.org','rpiplant','************')
nomefile="/home/pi/test.txt"


try:
    f =  open (nomefile, "rb")
except Exception as e:
    print("errore 1:", e)

try:
    session.storbinary("STOR " + nomefile, f)
except Exception as e:
    print("errore 2:", e)

session.quit()


La risposta  stata questa:

('errore 2:', error_perm('553 Impossibile aprire quel file: File o directory non esistente',))


E poi, hai provato a eseguirlo con sudo?

Quale file devo aprire con sudo? test.txt?

Le informazioni con stat che permessi ti danno sul file per verificare se te li ha cambiati effettivamente?
Non ho capito  :(





« Ultima modifica: Novembre 05, 2018, 23:24 da LaPa »

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #8 il: Novembre 05, 2018, 23:27 »
Scusate, forse ricordo male, ma il 553 non è un errore che arriva dal ricevente?

questo che vuol dire che Altervista rifiuta il file?

E perché riesco ad inviarlo con  il seguente file bash?

#!/bin/bash
/usr/bin/ftp -inv rpiplant.altervista.org <<ENDFTP


user rpiplant *********

bin

#provo a inviare un file di testo in pi/home
lcd /home/pi
put test.txt test.txt




Grazie

LaPa
« Ultima modifica: Novembre 05, 2018, 23:35 da LaPa »

Offline barbezuan

  • python habilis
  • **
  • Post: 55
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #9 il: Novembre 10, 2018, 19:18 »
Stai facendo un po di confusione.
Con lo script bash che hai postato non invii i file al path ma dal path (lcd = local change directory).
Poi i file vanno aperti e chiusi, non so se storbinary lo f al posto tuo.
Tornando al problema, proverei a togliere la "/" nella destinazione

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #10 il: Novembre 12, 2018, 23:49 »
Stai facendo un po di confusione.
Con lo script bash che hai postato non invii i file al path ma dal path (lcd = local change directory).
Sì Sì certo hai ragione. E' errata la descrizione. Ma se eseguo nel terminale quel file bash invia il file test.txt su rpiplant.altervista.org

Poi i file vanno aperti e chiusi, non so se storbinary lo f al posto tuo.
Tornando al problema, proverei a togliere la "/" nella destinazione

Non ho capito dove dovrei provare a togliere la "/". Potresti darmi indicazioni più precise.

Grazie

Saluti

LaPa


Offline barbezuan

  • python habilis
  • **
  • Post: 55
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #11 il: Novembre 13, 2018, 21:38 »
Allora, tu usi questa variabile

nomefile="/home/pi/test.txt"


composta da percorso assoluto e nome, sia per aprire il file

f =  open (nomefile, "rb")


che  come nome della destinazione

session.storbinary("STOR " + nomefile, f)


Sarebbe utile, per poterti aiutare, capire cosa vuoi fare realmente.
Tu con "STOR /home/pi/test.txt" stai tentando di scrivere sulla root della macchina remota e, giustamente, te lo impedisce.
Se lo trasformi in "STOR home/pi/test.txt" il percorso diventa relativo

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #12 il: Novembre 15, 2018, 23:08 »
Carissimi dopo tanto peregrinare ho trovato la risposta: facevo un errore di sintassi. Dopo STOR non dovevo concatenare, pertanto la sintassi corretta è:




import os
import ftplib

session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')


nomefile="/home/pi/test.txt"

session.storbinary("STOR   nomefile", open (nomefile, "rb"), 1024)


In questa maniera mi ritrovo il file test.txt col nome nomefile su altervista.

se voglio chiamarlo test.txt la sintassi diventa:


i
mport os
import ftplib

session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')


nomefile="/home/pi/test.txt"

session.storbinary("STOR   test.txt", open (nomefile, "rb"), 1024)


Saluti

LaPa

Offline LaPa

  • python unicellularis
  • *
  • Post: 26
  • Punti reputazione: 0
    • Mostra profilo
Re:[problema] non riesco a inviare file su Altervista con ftplib
« Risposta #13 il: Novembre 17, 2018, 16:23 »
Allora, tu usi questa variabile

nomefile="/home/pi/test.txt"


composta da percorso assoluto e nome, sia per aprire il file

f =  open (nomefile, "rb")


che  come nome della destinazione

session.storbinary("STOR " + nomefile, f)


Sarebbe utile, per poterti aiutare, capire cosa vuoi fare realmente.
Tu con "STOR /home/pi/test.txt" stai tentando di scrivere sulla root della macchina remota e, giustamente, te lo impedisce.
Se lo trasformi in "STOR home/pi/test.txt" il percorso diventa relativo


Avevi ragione ci son arrivato anche io in ritardo!!!

Forse questa volta è veramente tutto chiaro!

Dopo alcune prove ho capito di più riguardo all'errore che facevo

Questo è il pezzo di codice che mi dava errore quando non mi funzionava.

session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)


Dopo "STOR ", se non ho capito male, si indica come deve essere nominato il file su Altervista. Dunque se vogliamo nominarlo con un nome tipo Test.txt allora semplicemente scriveremo
"STOR Test.txt" 

al posto di
"STOR " +nomefile

Se invece il nome del file che deve apparire su Altervista è una variabile, allora va bene quella sintassi
"STOR " +nomefile
.   

Il mio codice non funzionava perché indicavo con un' unica variabile (nomefile) 2 cose diverse:
1) dove è posizionato nel computer e come si chiama il file che si deve spostare su Altervista
2) come deve essere nominato il file una volta inviato su Altervista e siccome nomefile era una variabile che conteneva oltre al nome del file anche l'indirizzo assoluto allora mi dava errore.

Pertanto se il voglio spostare il file che sta in home/pi e si chiama test.txt e voglio che questo venga rinominato con una  variabile e non con un nome fisso devo creare 2 variabili, ad esempio: nomefile che indica il file da spostare e nomefile1 che rinomina il file su altervista.  In quel caso il codice sarà:


Import os
import ftplib
session=ftplib.FTP('rpiplant.altervista.org', 'rpiplant','********')
nomefile="home/pi/test.txt"
nomefile1="test2.txt"

session.storbinary("STOR " + nomefile1, open (nomefile, "rb"), 1024)

session.quit()


Così funziona!!!

Un saluto

LaPa
« Ultima modifica: Novembre 17, 2018, 23:27 da LaPa »