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Ć
Chociaż w poprzednim przykładzie możemy wymienić pliki serwera, co jest całkiem przydatne przy uzyskiwaniu z nich informacji, czymś potężniejszym jest możliwość przesyłać pliki. Użyteczności tego jest wiele, możemy liczyć na przykład przeniesienie plików powstałych z jednej aplikacji do przetworzenia z innej, czy może wykonanie kopii zapasowej komputera w innym, który znajduje się w sieci. Oczywiście w dzisiejszych czasach mogą istnieć znacznie bardziej eleganckie rozwiązania, jednak nie wystarczy, aby móc to osiągnąć za pomocą aplikacji, którą sami tworzymy.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Ć
Zauważamy, że w tym przypadku parametr user jest jedynym, którego używamy, ponieważ na naszym serwerze mamy użytkownika o nazwie test-python, następnie wprowadzamy hasło przypisane do tego użytkownika i przesyłanie pliku odbywa się skutecznie.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.