390 likes | 1.04k Views
Paweł Kempiak. Prezentacja multimedialna. Język python. Wysyłanie żądań HTTP. $ telnet matrix.umcs.lublin.pl 80 Trying 212.182.0.171... Connected to matrix.umcs.lublin.pl. Escape character is '^]'. GET / HTTP/1.1 Host: matrix.umcs.lublin.pl HTTP/1.1 200 OK
E N D
Paweł Kempiak Prezentacja multimedialna.Język python.
$ telnet matrix.umcs.lublin.pl 80 Trying 212.182.0.171... Connected to matrix.umcs.lublin.pl. Escape character is '^]'. GET / HTTP/1.1 Host: matrix.umcs.lublin.pl HTTP/1.1 200 OK Date: Sun, 14 Dec 2008 20:14:45 GMT Server: Apache/2.2.9 (Debian) PHP/5.2.6-5 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g X-Powered-By: PHP/5.2.6-5 Vary: Accept-Encoding Content-Length: 5322 Content-Type: text/html Żądanie HTTP za pomocą telnetu
#Tworzenie obiektu modułu httplib >>> Request = httplib.HTTP(”matrix.umcs.lublin.pl”) #Zdefiniowanie metody pobierania danych >>> Request.putrequest(”GET”,”/”) >>> Request.endheaders() #Pobranie odpowiedzi serwera >>> Request.getreply() (200, 'OK', <httplib.HTTPMessage instance at 0xb7c46f2c>) #Pobranie zawartości strony w HTMLu >>> Page=Request.getfile() #Wyświetlenie zawartości strony na ekranie >>> linia = Page.readline() >>> while linia: … print linia … linia = Page.readline() Żądanie HTTP za pomocą modułu httplib
Protokoły pocztowe • POP3 (moduł poplib) • Służy do odbierania poczty. Domyślny port to 25 dla połączeń nieszyfrowanych, a przy użyciu szyfrowania SSL usługa działa na 995 porcie. • SMTP (moduł smtplib) • Służy do wysyłania poczty. Domyślny port to 110 dla połączeń nieszyfrowanych, a przy użyciu szyfrowania SSL usługa działa na 465 porcie. • IMAP (moduł imaplib) • Służy do zarządzania wiadomościami bezpośrednio na serwerze bez potrzeby ich pobierania.
#Łączenie z serwerem >>> Mailbox = poplib.POP3(”liza.umcs.lublin.pl”) #Logowanie na skrzynce >>> Mailbox.user=(”nazwa_uzytkownika”) >>> Mailbox.pass_(”haslo”) #Pobranie ilości wiadomości oraz ich rozmiar. Zwracane jest #w tupli ilość wiadomość i ich rozmiar >>> Mailbox.stat() #Szczegółowe wylistowanie wiadomości >>> Mailbox.list() #Pobranie zawartości e-maila >>> Mailbox.retr(numer_wiadomosci) #Usunięcie wiadomości nr 1 >>> Mailbox.dele(1) #Po wykonaniu metody rset cofane są decyzje #Wylogowanie ze skrzynki >>> Mailbox.quit() POP3 – łączenie i logowanie
#Łączenie z serwerem SMTP >>> Outbox=smtplib.SMTP(”matrix.umcs.lublin.pl”) #Logowanie do serwera SMTP >>> Outbox.login(”nazwa_uzytkownika”,”haslo”) >>> MyAddress=”pkempiak[at]lmatrix.umcs.lublin.pl” >>> TargetAddress=”pkempiak[at]matrix.umcs.lublin.pl” >>> HeaderText=”From: ”+MyAddress+”\n” >>> HeaderText+=”To: ”+TargetAddress+”\n\n” #Wysłanie wiadomości >>> Outbox.sendmail(MyAddress,TargetAddress,HeaderText+ +”Moja wiadomosc”) SMTP – łączenie i logowanie
exception SMTPException Główny wyjątek, który wyłapuje wszystkie wyjątki SMTP exception SMTPServerDisconnected Wyjątek ten wyrzucany jest gdy serwer nieoczekiwanie rozłączy się z niewiadomego powodu. exception SMTPResponseException Wyjątek ten wyrzucany jest gdy serwer zwraca kod błędu, który zapisany jest w atrybucie smtp_code. Zawiera wyjście błędu. SMTP – obsługa wyjątków
exception SMTPSenderRefused Wyjątek wyrzucany jest gdy wysyłający adres jest odrzucony. exception SMTPRecipientsRefused Wyjątek wyrzucany jest gdy wszystkie adresy odbiorców są odrzucone. Metoda sendmail() może wyrzucić ten wyjątek. exception SMTPDataError Wyjątek wyrzucany kiedy serwer SMTP odrzucił zawartość maila. SMTP – obsługa wyjątków (2)
exception SMTPConnectError Wyjątek wyrzucony jest gdy wystąpi błąd podczas ustanawiania połączenia z serwerem SMTP. exception SMTPHeloError Wyjątek wyrzucany gdy serwer odrzucił wiadomość "HELO". exception SMTPAuthenticationError Wyjątek wyrzucany jest gdy podano błędną nazwę użytkownika lub hasło. SMTP – obsługa wyjątków (3)
#Łączenie z serwerem IMAP >>> imap=imaplib.IMAP4(adres_email) #Logowanie do serwera IMAP >>> imap.login(nazwa_uzytk,haslo) #Wybranie katalogu zdalnego na serwerze, z którego będą #pobierane wiadomości >>> imap.select(”INBOX”) #Wyszukiwanie wiadomości według kryteriów >>> imap.search(None,”ALL”,”FROM”,”president[at]whitehose.com”) #Odbieranie wiadomości; pierwszy par. to nr wiadomosci, drugi par. to część wiadomości która ma być wyświetlona, np. FULL, BODY >>> imap.fatch(”1”, BODY[text]) #Zmiana statusu wiadomości; drugi par. „-FLAG” lub „+FLAG” >>> imap.store(”1”,”+FLAG”,[”\Deleted”]) IMAP – łączenie i logowanie
#Usunięcie wszystkich wiadomości oznaczonych flagą ”\Deleted” >>> imap.expunge() #Skopiowanie części wiadomości do innej skrzynki >>> imap.copy(wiadomosci,nowa_skrzynka) IMAP – łączenie i logowanie (2)
#Tworzenie nowej skrzynki >>> imap.create(nazwa) #Usunięcie skrzynki >>> imap.delete(nazwa) #Zmiana nazwy skrzynki >>> imap.rename(stara_nazwa,nowa_nazwa) #Wyszukiwanie nazw skrzynek >>> print imap.list() #Sprawdzenie statusu wiadomości >>> imap.status(”INBOX”,”(MESSAGES UIDNEXT)”) #Dodawanie wiadomości do skrzynki >>> imap.append(nazwa_skrzynki, flagi, czas, wiadomosc) IMAP – administrowanie skrzynką
IMAP4.error Wyjątek wyrzucany podczas błędów z użyciem obiektu IMAP4 IMAP4.abort Wyjątek zarezerwowany dla błędów serwera IMAP4.readonly Wyjątek wyrzucany gdy serwer podczas edycji maila zmieni skrzynkę, po czym trzeba ją otworzyć ponownie. IMAP – obsługa wyjątków
#Logowanie do serwera ftp >>> session=ftplib.FTP([host[,user[,password[,acct]]]]) #Pobranie powitania serwera >>> session.getwelcome() #Zwrócenie aktualnej ścieżki >>> session.pwd() #Przejście do ścieżki danej parametrem >>> session.cwd(sciezka) #Utworzenie katalogu >>> session.mkdir(nazwa_katalogu) #Usunięcie pustego katalogu >>> session.rmdir(nazwa_katalogu) #Wyświetlenie listy plików i katalogów >>> session.nlst([dir[,args]]) #Pobranie rozmiaru pliku >>> session.size(nazwa_pliku) Użycie modułu ftplib
#Usunięcie pliku >>> session.delete(nazwa_pliku) #Zmiana nazwy pliku >>> session.rename(stara_nazwa,nowa_nazwa) #Przesłanie pliku lokalnego do serwera >>> Source=open(sciezka) >>> Session.storbinary(”STOR plik.txt”,Source,8192) #Przesłanie pliku zdalnego do lokalnego komputera >>> destination=open(”plik2.txt”,”w”) >>> session.retrbinary(”RETR plik2.txt”,dest.write) >>> destination.close() #Ustawienie pasywnego połączenia >>> session.set_pasv(value) #Ustawienie poziomu debugowania (level 2 najwięcej informacji) >>> session.set_debuglevel(level) Użycie modułu ftplib (2)
error_reply Wyjątek wyrzucony jeśli serwer nieoczekiwanie wysłał odpowiedź error_temp Wyjątek wyrzucony jeśli wystąpił tymczasowy błąd error_perm Wyjątek wyrzucony jeśli są problemy z prawami dostępu error_proto Wyjątek wyrzucony jeśli wystąpił nieznany błąd ftplib - Obsługa wyjątków
Moduł netrc jest używany do przetwarzania plików *.netrc. Pliki te przechowują informacje o użytkownikach dla serwerów FTP. Mogą zawierać również makra. MyNetrc=netrc.netrc(".netrc") MyNetrc.hosts["ftp.oracle.com"]=("stanner","","weeble") NetrcFile=open(".nterc") NetrcFile.write(repr(MyNetrc)) NetrcFile.close() Użycie modułu netrc