Arbejde med FTP fra Python

Indholdsfortegnelse
Python Det er et sprog, der giver os mulighed for at integrere arbejde med de forskellige funktionaliteter i operativsystemer på en let og intuitiv måde takket være det store antal biblioteker og dokumentation, der findes på nettet gratis og godt forklaret.
Et af de stærkeste punkter ved dette sprog er arbejdet med netværksprotokoller, blandt hvilke vi kan nævne FTP og noget mere almindeligt som f.eks. e -mail, med dette kan vi udvikle programmer eller applikationer, der giver os mulighed for at uploade filer til eksterne computere på en automatisk måde, hvis vi ønsker det, alt sammen uden at skulle bruge andre værktøjer uden for økosystemet for Python.
Protokollen FTP giver os mulighed for at foretage filoverførsler via en forbindelse i et netværk. Normalt er det den protokol, vi bruger til at oprette forbindelse eksternt til servere og på denne måde manipulere filer, normalt port 21Dette er dog helt op til forbrugerens smag, så hvis vi ser en anden port, er det ikke overraskende, at det er en brugerdefineret installation.
For at interagere med denne protokol har vi brug for to ting, den første er en server, der er i luften og tilgængelig for vores netværk, den kan være på det samme netværk eller måske på Internettet. Den anden ting, der er nødvendig, er en klient, der kan sende og modtage oplysninger fra serveren, denne klient skal have mulighed for at bruge de porte, der er angivet af tjenesten, og den etablerede godkendelse.
Få en klient ind Python at jeg kan oprette forbindelse FTP Fra bunden er det muligt, men den indsats, det ville tage os, ville være betydelig, og i sidste ende kan det være forgæves, hvis vi ikke har brug for noget særligt.
For at undgå gener og unødvendig udvikling Python giver os et bibliotek, der allerede hjælper os med meget af arbejdet. Vi taler om ftplib, den indeholder komplette og allerede testede og raffinerede metoder, der letter kommunikation ved hjælp af filoverførselsprotokollen FTP.
Hvordan bruges biblioteket?For at bruge dette bibliotek skal vi blot inkludere det i vores program ved hjælp af instruktionen importere og så starter vi vores normale udvikling. I det følgende eksempel skal vi lave et lille klientprogram, der kan oprette forbindelse til en server FTP, i dette tilfælde vil vi bruge tjenesten kernel.org som er et Linux -websted, og med det vil vi liste de tilgængelige filer.
Vi vælger denne server, fordi den ikke har brug for godkendelse, og den giver os mulighed for at bruge anonym tilstand. Lad os derefter se koden, og derefter vil vi lave den tilsvarende forklaring, det eneste krav, vi har brug for, er at have Python 2.7 og internetforbindelse:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, brugernavn, mail): # åbn forbindelsen ftp = ftplib.FTP (server, brugernavn, mail) # vi viser listen filer i / pub -biblioteket ftp.cwd (" / pub") udskriver "Filer tilgængelige i% s:"% server files = ftp.dir () udskriver filer ftp.quit () hvis __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, brugernavn = 'anonym', mail='[email protected] ',) 

Den første ting, vi gør, er at definere en variabel i filen, der skal indeholde serverstien FTP som vi vil oprette forbindelse til, i dette tilfælde er det ftp .kernel.org, det er her, vi kan få kerneinformation fra Linux.
Næste handling gør vi importere fra boghandlen ftplib førnævnte, med dette sikrer vi muligheden for at bruge alle de nødvendige metoder til at oprette forbindelse til serveren defineret ovenfor, til dette bruger vi metoden FTP af det samme vil vi passere ruten, brugernavnet og en e -mail.
Kontrol af forbindelsenFor at teste, at forbindelsen fungerer, bruger vi kommandoen cwd for at navigere til et bibliotek og derefter med dir () Vi kan liste filerne i den mappe på serveren, når vi er færdige med vores procedure, kalder vi metoden Afslut () for at afslutte sessionen og lukke forbindelsen.
Denne kode skal indeholde en fil med det navn, vi ønsker med udvidelse .py så vores tolk Python kan udføre det, for dette på stien, hvor vores fil er placeret, udfører vi det med det reserverede ord python og navnet på vores fil, som skulle give os noget, der ligner det, vi ser på følgende skærm:

FORSTØRRE

Selvom vi i det foregående eksempel kan liste filerne på en server, hvilket er ganske nyttigt at få oplysninger fra dem, er noget mere kraftfuldt at kunne uploade filer. Værktøjerne til dette er mange, vi kan for eksempel tælle overførsel af filer, der stammer fra en applikation til behandling fra en anden, eller måske lave sikkerhedskopier af en computer i en anden, der er inden for netværket. Selvfølgelig kan der i dag være meget mere elegante løsninger, men det er ikke nok at kunne opnå det med en applikation, som vi selv udvikler.
KravDet ekstra krav, vi har brug for til denne øvelse, er at have en lokal FTP -server i vores testudstyr, til dette hvis vi har et Linux -system, vi kan bruge wu-ftp, men hvis vi er på platformen Windows vi kan bruge Filezilla Server, som er gratis at bruge.
Uanset hvilken server vi kan bruge, skal vi have tilladelser eller mulighed for anonym adgang, men i den følgende kode vil vi se på en bedre måde, hvordan vi kan uploade filer.
Vi skal oprette en bruger og en FTP -konto På den lokale server, som vi opretter for at kunne bruge dette eksempel, fungerer det også med fjernservere, vi skal simpelthen sikre os, at vi har vores legitimationsoplysninger opdateret. Så kan vi bruge følgende kode:
 #! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'eksempel.txt' def upload_ftp (server, brugernavn, adgangskode, upload_file): print "Opretter forbindelse til server:% s" % server ftp = ftplib.FTP (server) udskriver "Log ind som: bruger =% s"% brugernavn ftp.login (brugernavn, adgangskode) ext = os.path.splitext (upload_file) [1] hvis ext (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb ")), 1024) udskriv "Uploadet fil:% s"% upload_file hvis __name__ == '__main__': parser = argparse.ArgumentParser (beskrivelse = 'Eksempel på upload af FTP-filer') parser.add_argument ('- server', action = 'store' , dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- fil', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- bruger', action = 'butik' , dest = "n user_name ", default = getpass.getuser ()) application_parameters = parser.parse_args () server, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name password: password: getpass.getpass the (prompt =") password: getpass.getpass (prompt = ") upload_ftp (server, brugernavn, adgangskode, upload_file) 

I dette eksempel ud over at importere biblioteket ftplib, vi importerer også biblioteker du for at få adgang til operativsystemkommandoer bruger vi derudover argparse Y getpass for at behandle brugen af ​​parametre indtastet af brugeren og dermed gøre vores program mere dynamisk.
Derefter definerer vi et par konstanter, som vi skal etablere serveren med og en eksempelfil, som vi vil uploade til den mappe, der er defineret af vores bruger FTP. Det næste trin er at åbne forbindelsen FTPMen i dette tilfælde vil vi bruge et brugernavn og en adgangskode, da vi i teorien får adgang til en server med ikke-anonym godkendelse, det er for det meste af sikkerhedsmæssige årsager og også for at vise, at vores eksempel fungerer i andre tilfælde.
Vi fortsætter med at evaluere udvidelsen af ​​vores fil, med dette vil vi se, om det er en tekstfil, til dette bruger vi storlines (), hvormed vi ikke vil påvirke indholdet af det samme, i tilfælde af at være en anden udvidelse, der er forskellig fra de definerede, vil vi bruge metoden storbinary () for at kunne videregive filen i sin oprindelige form med dets binære indhold og dermed ikke ødelægge den og tillade den at blive brugt.
Endelig bruger vi argparse () for at kunne tage de argumenter, som en bruger kan introducere for at bruge vores program, med den undtagelse, at hvis det ikke placerer værdier, vil de globale værdier, der er defineret i vores program, blive taget. Vi kører vores program, og hvis alt er gået korrekt, vil vi kunne se følgende output i vores konsol:

FORSTØRRE

Vi bemærker, at i dette tilfælde er brugerparameteren den eneste, vi bruger, da vi på vores server har en bruger kaldet test-python, så introducerer vi den adgangskode, der er tildelt brugeren, og upload af filen udføres effektivt.
Med dette afslutter vi denne vejledning, vi har lært, hvordan man opretter en forbindelse FTP fra et program lavet i Python, det vigtige her er at bemærke, hvordan med metoder, der kommer fra standardbiblioteket Python vi har formået at udføre funktionaliteter, der ellers ville have taget lang tid, bortset fra den store mængde kode, der skulle genereres. Vi anbefaler fortsat at undersøge boghandelens officielle dokumentation ftplib, på denne måde vil vi øge vores kompetencer i verden betydeligt Pythonog åbner dermed dørene for at blive mere effektive som udviklere i denne meget konkurrencedygtige teknologiske verden.
wave wave wave wave wave