Spisie treści
Pyton Jest to język, który pozwala nam w łatwy i intuicyjny sposób włączać pracę z różnymi funkcjonalnościami systemów operacyjnych, dzięki dużej liczbie bibliotek i dokumentacji, które istnieją w sieci za darmo i są dobrze wyjaśnione.Jedną z najmocniejszych stron tego języka jest praca z protokołami sieciowymi, wśród których możemy wymienić: FTP i coś bardziej powszechnego, takiego jak poczta e-mail, dzięki której możemy tworzyć programy lub aplikacje, które pozwalają nam przesyłać pliki na zdalne komputery w sposób zautomatyzowany, jeśli sobie tego życzymy, a wszystko to bez konieczności uciekania się do innych narzędzi spoza ekosystemu Pyton.
Protokół FTP pozwala nam na wykonywanie transferów plików przez połączenie w sieci. Zwykle jest to protokół, którego używamy do zdalnego łączenia się z serwerami i w ten sposób manipulowania plikami, zwykle port 21Jest to jednak całkowicie zależne od gustu konsumenta, więc jeśli widzimy inny port, nie dziwi, że jest to instalacja niestandardowa.
Do interakcji z tym protokołem potrzebujemy dwóch rzeczy, pierwsza to serwer, który jest na antenie i jest dostępny dla naszej sieci, może być w tej samej sieci lub być może w Internecie. Drugą rzeczą, która jest potrzebna, jest klient, który może wysyłać i odbierać informacje od wspomnianego serwera, ten klient musi mieć możliwość korzystania z portów określonych przez usługę i ustanowionego uwierzytelnienia.
Zrób klienta w Pyton że mogę nawiązać połączenie FTP Od zera jest to możliwe, jednak wysiłek, jaki by nas to zabrał, byłby niemały i ostatecznie może pójść na marne, jeśli nie potrzebujemy czegoś wyjątkowego.
Aby uniknąć niedogodności i niepotrzebnego rozwoju Pyton udostępnia nam bibliotekę, która już pomaga nam w wielu pracach. Rozmawiamy o ftplib, zawiera kompletne i już przetestowane i dopracowane metody ułatwiające komunikację za pomocą protokołu przesyłania plików FTP.
Jak korzystać z biblioteki?Aby korzystać z tej biblioteki, musimy po prostu włączyć ją do naszego programu za pomocą instrukcji import i wtedy zaczynamy nasz normalny rozwój. W poniższym przykładzie stworzymy mały program kliencki, który może łączyć się z serwerem FTP, w tym przypadku skorzystamy z usługi kernel.org który jest stroną linuksową i wraz z nią wymienimy dostępne pliki.
Wybieramy ten serwer, ponieważ nie wymaga on uwierzytelniania i pozwala nam korzystać z trybu anonimowego. Zobaczmy więc kod, a następnie zrobimy odpowiednie wyjaśnienie, jedynym wymaganiem, którego potrzebujemy, jest posiadanie Python 2.7 i połączenie internetowe:
#!/usr/bin/env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (serwer, nazwa użytkownika, poczta): # otwieramy połączenie ftp = ftplib.FTP (serwer, nazwa użytkownika, poczta) # wymieniamy pliki w katalogu / pub ftp.cwd ("/ pub") print "Pliki dostępne w % s:"% server files = ftp.dir () print files ftp.quit () if __name__ == '__main__': client_ftp_conexion ( serwer = ŚCIEŻKA_SERWERA_FTP, nazwa użytkownika = 'anonimowy', poczta='[email protected]',)
Pierwszą rzeczą, którą robimy, jest zdefiniowanie zmiennej w pliku, która będzie zawierać ścieżkę serwera FTP z którym chcemy nawiązać połączenie, w tym przypadku jest to ftp .kernel.org, stąd możemy uzyskać informacje o jądrze Linux.
Następny akt robimy import z księgarni ftplib wyżej, tym zapewniamy możliwość wykorzystania wszystkich niezbędnych metod połączenia z serwerem zdefiniowanych powyżej, w tym celu korzystamy z metody FTP tego samego, tam podajemy trasę, nazwę użytkownika i e-mail.
Sprawdzanie połączeniaAby sprawdzić, czy połączenie działa, używamy polecenia cwd aby przejść do katalogu, a następnie za pomocą reż () Możemy wyświetlić listę plików w tym folderze na serwerze, po zakończeniu naszej procedury wywołujemy metodę zrezygnować () aby zakończyć sesję i zamknąć połączenie.
Ten kod musi znaleźć się w pliku o nazwie, którą chcemy z rozszerzeniem .py aby nasz tłumacz Pyton może go wykonać, w tym celu w ścieżce, w której znajduje się nasz plik, wykonujemy go za pomocą zastrzeżonego słowa python i nazwa naszego pliku, co powinno dać nam coś podobnego do tego, co widzimy na poniższym ekranie:
POWIĘKSZAĆ
WymógDodatkowym wymaganiem, którego potrzebujemy do tego ćwiczenia, jest posiadanie lokalny serwer FTP w naszym sprzęcie testowym, w tym celu, jeśli mamy system Linux, którego możemy użyć wu-ftp, ale jeśli jesteśmy na platformie Okna możemy użyć serwera Filezilla, który jest darmowy.
Niezależnie od tego, z jakiego serwera możemy korzystać, musimy mieć uprawnienia lub możliwość anonimowego dostępu, w każdym razie w poniższym kodzie lepiej zobaczymy, jak możemy przesyłać pliki.
Musimy utwórz użytkownika i konto FTP Na serwerze lokalnym, który tworzymy, aby móc skorzystać z tego przykładu, działa również z serwerami zdalnymi, po prostu musimy upewnić się, że nasze poświadczenia są aktualne. Następnie możemy użyć następującego kodu:
#! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (serwer, nazwa użytkownika, hasło, upload_file): print "Łączenie z serwerem:% s " % server ftp = ftplib.FTP (serwer) print" Logowanie jako: user =% s "% nazwa użytkownika ftp.login (nazwa użytkownika, hasło) ext = os.path.splitext (plik_przesyłania) [1] if ext in ( ". txt", ".htm", ".html"): ftp.storlines ("STOR" + upload_file, open (upload_file)) else: ftp.storbinary ("STOR" + upload_file, open (upload_file, "rb" ), 1024) print "Przesłany plik:% s"% upload_file if __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Przykład wgrywania plików FTP') parser.add_argument ('- server', action = "store" , dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- user' , action = "store" , cel = "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 the (prompt = ") upload_ftp (serwer, nazwa użytkownika, hasło, upload_file)
W tym przykładzie oprócz importowania biblioteki ftplib, importujemy również biblioteki Ty aby mieć dostęp do poleceń systemu operacyjnego dodatkowo używamy argparsować Tak przejść dalej w celu przetwarzania wykorzystania parametrów wprowadzonych przez użytkownika i tym samym zdynamizowania naszego programu.
Następnie definiujemy kilka stałych, z którymi będziemy ustanawiać serwer oraz przykładowy plik, który wrzucimy do folderu zdefiniowanego przez naszego użytkownika FTP. Następnym krokiem jest otwarcie połączenia FTPJednak w tym przypadku użyjemy nazwy użytkownika i hasła, ponieważ teoretycznie uzyskujemy dostęp do serwera z uwierzytelnianiem nieanonimowym, głównie ze względów bezpieczeństwa, a także po to, aby pokazać, że nasz przykład działa w innych przypadkach.
Kontynuujemy ocenę rozszerzenia naszego pliku, dzięki czemu zobaczymy, czy jest to plik tekstowy, do tego używamy storliny (), z którym nie wpłyniemy na zawartość tego samego, w przypadku rozszerzenia innego niż zdefiniowane zastosujemy metodę pamiętnik () aby móc przekazać plik w jego oryginalnej formie wraz z zawartością binarną, nie uszkadzając go i umożliwiając dalsze korzystanie.
Wreszcie używamy argparsować () aby móc przyjąć argumenty, które użytkownik może wprowadzić do korzystania z naszego programu, z tym wyjątkiem, że jeśli nie umieści wartości, to zostaną wzięte wartości globalne zdefiniowane w naszym programie. Uruchamiamy nasz program i jeśli wszystko poszło poprawnie, będziemy mogli zobaczyć w naszej konsoli następujące wyjście:
POWIĘKSZAĆ
Na tym kończymy ten samouczek, nauczyliśmy się, jak nawiązać połączenie FTP z programu wykonanego w Pyton, ważne jest, aby zwrócić uwagę na metody pochodzące ze standardowej biblioteki Pyton udało nam się zrealizować funkcjonalności, które w innym przypadku zajęłyby nam dużo czasu, poza dużą ilością kodu, który musiałby zostać wygenerowany. Zalecamy dalsze badanie oficjalnej dokumentacji księgarni ftplib, w ten sposób znacząco zwiększymy nasze umiejętności na świecie Pyton, otwierając tym samym drzwi do bycia bardziej efektywnymi jako deweloperzy w tym wysoce konkurencyjnym świecie technologicznym.