Python - Programmation Réseau
Python - Programmation Réseau
Public
Ce didacticiel est conçu pour les diplômés en informatique ainsi que pour les professionnels du
logiciel qui souhaitent apprendre la programmation réseau en étapes simples et faciles en
utilisant Python comme langage de programmation.
Conditions préalables
Avant de poursuivre ce didacticiel, vous devez avoir une connaissance de base de l'écriture de
code en langage de programmation Python, de l'utilisation de n'importe quel IDE python et de
l'exécution de programmes Python. Si vous êtes complètement nouveau dans Python, veuillez
vous référer à notre tutoriel Python pour avoir une bonne compréhension du langage.
Programmation de socket
Les sockets sont les liens par lesquels le client et les serveurs communiquent entre eux. Par
exemple, lorsqu'un navigateur est ouvert, un socket est automatiquement créé pour se connecter
au serveur. Python a un module de socket qui peut être utilisé pour implémenter diverses
fonctionnalités de socket comme la liaison d'une adresse ou le démarrage d'un port d'écoute. La
programmation de socket est fondamentale pour les réseaux informatiques et python le gère
bien.
Programmation client
Le client est l'ordinateur qui demande des informations et attend la réponse. Les programmes
Python peuvent être écrits pour valider de nombreuses actions côté client comme l'analyse d'une
URL, l'envoi de paramètres avec l'URL lors de la soumission d'une requête, la connexion à une
URL alternative si l'accès à une URL échoue, etc. Ces programmes sont exécutés dans les
programmes clients et gérer tous les besoins de communication avec le serveur même sans
utiliser de navigateur. Par exemple, vous pouvez fournir une URL au programme python pour
télécharger un fichier et cela sera fait par le programme lui-même sans l'aide du programme du
navigateur.
Construire des serveurs Web
Il est possible de créer des serveurs Web simples qui sont assez bons pour exécuter des sites
Web en utilisant python comme langage de programmation. Python a déjà des serveurs Web
intégrés qui peuvent être modifiés pour obtenir certaines fonctionnalités supplémentaires
nécessaires.
le SimpleHTTPServerLe module fournit les fonctionnalités d'un serveur Web prêtes à l'emploi et
vous pouvez commencer à l'exécuter à partir de l'installation python locale. En python 3, il est
nomméhttp.serverCherryPy et Tornado sont des exemples de serveurs Web écrits en python
qui fonctionnent aussi bien que des serveurs Web non python bien connus comme Apache ou
Ngnix.
Plate-forme Windows
Les binaires de la dernière version de Python 3 (Python 3.5.1) sont disponibles sur cette page de
téléchargement
Les différentes options d'installation suivantes sont disponibles.
Fichier zip intégrable Windows x86-64
Programme d'installation de l'exécutable Windows x86-64
Programme d'installation Web Windows x86-64
Fichier zip intégrable Windows x86
Programme d'installation de l'exécutable Windows x86
Programme d'installation Web Windows x86
Note- Pour installer Python 3.5.1, la configuration minimale requise pour le système d'exploitation
est Windows 7 avec SP1. Pour les versions 3.0 à 3.4.x, Windows XP est acceptable.
Plateforme Linux
Différentes versions de Linux utilisent différents gestionnaires de packages pour l'installation de
nouveaux packages.
Sur Ubuntu Linux, Python 3 est installé à l'aide de la commande suivante à partir du terminal.
Mac OS
Téléchargez les programmes d'installation Mac OS à partir de cette URL
- https://www.python.org/downloads/mac-osx/
Programme d'installation de Mac OS X 64 bits / 32 bits - python-3.5.1-macosx10.6.pkg
Programme d'installation de Mac OS X 32 bits i386 / PPC - python-3.5.1-macosx10.5.pkg
Double-cliquez sur ce fichier de package et suivez les instructions de l'assistant pour l'installer.
Le code source, binaires, documentation, actualités, etc. les plus à jour et les plus récents est
disponible sur le site officiel de Python -
Python Official Website - https://www.python.org/
Vous pouvez télécharger la documentation Python à partir du site suivant. La documentation est
disponible aux formats HTML, PDF et PostScript.
Python Documentation Website- www.python.org/doc/
Configurer PATH
Les programmes et autres fichiers exécutables peuvent se trouver dans de nombreux
répertoires. Par conséquent, les systèmes d'exploitation fournissent un chemin de recherche qui
répertorie les répertoires dans lesquels il recherche les exécutables.
Les caractéristiques importantes sont -
Le chemin est stocké dans une variable d'environnement, qui est une chaîne nommée
gérée par le système d'exploitation. Cette variable contient des informations disponibles
pour le shell de commande et d'autres programmes.
La variable de chemin est nommée comme PATH sous Unix ou Path sous Windows
(Unix est sensible à la casse; Windows ne l'est pas).
Sous Mac OS, le programme d'installation gère les détails du chemin. Pour appeler
l'interpréteur Python à partir d'un répertoire particulier, vous devez ajouter le répertoire
Python à votre chemin.
Exécuter Python
Il existe trois façons différentes de démarrer Python -
Interprète interactif
Vous pouvez démarrer Python depuis Unix, DOS ou tout autre système qui vous fournit un
interpréteur de ligne de commande ou une fenêtre shell.
Entrer python la ligne de commande.
Commencez immédiatement à coder dans l'interpréteur interactif.
$python # Unix/Linux
or
python% # Unix/Linux
or
C:>python # Windows/DOS
HTTP urllib.parse Pour casser les chaînes URL (Uniform Resource Locator) dans des composants
emplacement réseau, chemin, etc.),
HTTP urllib.robotparser Il détermine si un agent utilisateur particulier peut ou non récupérer une URL
robots.txt.
FTP ftplib implémente le côté client du protocole FTP. Vous pouvez l'utiliser pour écrire
une variété de tâches FTP automatisées, telles que la mise en miroir d'autres
POP poplib Ce module définit une classe, POP3, qui encapsule une connexion à un serveu
serveur de messagerie
IMAP imaplib Ce module définit trois classes, IMAP4, IMAP4_SSL et IMAP4_stream, qui enc
IMAP4 pour lire les e-mails.
SMTP smtplib Le module smtplib définit un objet de session client SMTP qui peut être utilisé
quelle machine Internet avec un démon listner SMTP.
Telnet telnet Ce module fournit une classe Telnet qui implémente le protocole Telnet pour
Python - Adresse IP
L'adresse IP (Internet Protocol) est un concept de mise en réseau fondamental qui fournit une
capacité d'attribution d'adresses dans un réseau. Le module pythonipaddressest largement
utilisé pour valider et classer les adresses IP en types IPV4 et IPV6. Il peut également être utilisé
pour comparer les valeurs d'adresse IP ainsi que l'arithmétique d'adresse IP pour manipuler les
adresses IP.
print (ipaddress.ip_address(u'192.168.0.255'))
print (ipaddress.ip_address(u'192.168.0.256'))
print (ipaddress.ip_address(u'FFFF:9999:2:FDE:257:0:2FAE:112D'))
#invalid IPV6 address
print (ipaddress.ip_address(u'FFFF:10000:2:FDE:257:0:2FAE:112D'))
ffff:9999:2:fde:257:0:2fae:112d
ValueError: u'FFFF:10000:2:FDE:257:0:2FAE:112D' does not appear to be an
IPv4 or IPv6 address
print type(ipaddress.ip_address(u'192.168.0.255'))
print type(ipaddress.ip_address(u'2001:db8::'))
print ipaddress.ip_address(u'192.168.0.255').reverse_pointer
print ipaddress.ip_network(u'192.168.0.0/28')
255.0.168.192.in-addr.arpa 192.168.0.0/28
Comparison of IP Addresses
We can make a logical comparison of the IP addresses finding out if they are
equal or not. We can also compare if one IP address is greater than the other
in its value.
True
False
True
IP Addresses Arithmetic
We can also apply arithmetic operations to manipulate IP addresses. We can add
or subtract integers to an IP address. If after addition the value of the last
octet goes beyond 255 then the previous octet gets incremented to accommodate
the value. If the extra value can not be absorbed by any of the previous octet
then a value error is raised.
print (ipaddress.IPv4Address(u'192.168.0.2')+1)
print (ipaddress.IPv4Address(u'192.168.0.253')-3)
# Increases the previous octet by value 1.
print (ipaddress.IPv4Address(u'192.168.10.253')+3)
# Throws Value error
print (ipaddress.IPv4Address(u'255.255.255.255')+1)
192.168.0.3
192.168.0.250
192.168.11.0
AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4
address
('IP', u'94.130.81.180')
MX Record: ASPMX.L.GOOGLE.COM.
MX Record: ALT1.ASPMX.L.GOOGLE.COM.
MX Record: ALT2.ASPMX.L.GOOGLE.COM.
Python - Routage
Le routage est le mécanisme de mappage de l'URL directement sur le code qui crée la page
Web. Il contribue à une meilleure gestion de la structure de la page Web et augmente
considérablement les performances du site et d'autres améliorations ou modifications deviennent
vraiment simples. En python, le routage est implémenté dans la plupart des travaux de cadre
Web. Nous verrons les exemples deflask cadre Web dans ce chapitre.
Nous ouvrons le navigateur et pointons vers l'URL http://localhost:5000/ pour voir le résultat de
la fonction en cours d'exécution.
Utilisation des variables d'URL
Nous pouvons transmettre des variables d'URL en utilisant route pour créer des URL à la volée.
Pour cela, nous utilisons la fonction url_for () qui accepte le nom de la fonction comme premier
argument et le reste des arguments comme partie variable de la règle URL.
Dans l'exemple ci-dessous, nous transmettons les noms de fonction en tant qu'arguments à la
fonction url_for et affichons le résultat lorsque ces lignes sont exécutées.
Redirige
Nous pouvons utiliser la fonction de redirection pour rediriger l'utilisateur vers une autre URL en
utilisant le routage. Nous mentionnons la nouvelle URL comme valeur de retour de la fonction qui
devrait rediriger l'utilisateur. Ceci est utile lorsque nous détournons temporairement les
utilisateurs vers une page différente lorsque nous modifions une page Web existante.
Lorsque le code ci-dessus est exécuté, l'URL de base va à la page de connexion qui utilise la
fonction d'abandon afin que le code de la page de connexion ne soit jamais exécuté.
Méthode de demande
La demande method indique la méthode à exécuter sur la ressource identifiée par le Request-
URI. La méthode est sensible à la casse et doit toujours être mentionnée en majuscules. Le
tableau suivant répertorie toutes les méthodes prises en charge dans HTTP / 1.1.
SN Méthode et description
1 GET
La méthode GET est utilisée pour récupérer les informations du serveur donné en utilisant un URI don
doivent récupérer que des données et ne doivent avoir aucun autre effet sur les données.
2 HEAD
3 POST
Une requête POST est utilisée pour envoyer des données au serveur, par exemple des informations cli
à l'aide de formulaires HTML.
4 PUT
Remplace toutes les représentations actuelles de la ressource cible par le contenu téléchargé.
5 DELETE
Supprime toutes les représentations actuelles de la ressource cible données par URI.
6 CONNECT
sept OPTIONS
Request-URI
Le Request-URI est un identificateur de ressource uniforme et identifie la ressource sur laquelle
appliquer la demande. Voici les formulaires les plus couramment utilisés pour spécifier un URI:
SN Méthode et description
1 L'astérisque *est utilisé lorsqu'une requête HTTP ne s'applique pas à une ressource particulière, mais au serveu
lorsque la méthode utilisée ne s'applique pas nécessairement à une ressource. Par exemple:
OPTIONS * HTTP/1.1
2 le absoluteURIest utilisé lorsqu'une requête HTTP est adressée à un proxy. Le proxy est invité à transférer la de
valide et à renvoyer la réponse. Par exemple:
3 La forme la plus courante de Request-URI est celle utilisée pour identifier une ressource sur un serveur ou une
client souhaitant récupérer une ressource directement depuis le serveur d'origine créerait une connexion TCP
et enverrait les lignes suivantes:
Dans l'exemple ci-dessous, nous voyons un cas de requête GET simple et imprimons le résultat
de la réponse. Nous choisissons d'imprimer uniquement les 300 premiers caractères.
<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial
A Status-line
Les sections suivantes expliquent chacune des entités utilisées dans un message de réponse
HTTP.
Version HTTP
Un serveur prenant en charge HTTP version 1.1 renverra les informations de version suivantes:
HTTP-Version = HTTP/1.1
Code d'état
L'élément Status-Code est un entier à 3 chiffres où le premier chiffre du Status-Code définit la
classe de réponse et les deux derniers chiffres n'ont aucun rôle de catégorisation. Il y a 5 valeurs
pour le premier chiffre:
SN Code et description
1 1xx: Informational
2 2xx: Success
Cela signifie que l'action a été reçue, comprise et acceptée avec succès.
3 3xx: Redirection
Cela signifie que des mesures supplémentaires doivent être prises pour terminer la demande.
Cela signifie que la demande contient une syntaxe incorrecte ou ne peut pas être satisfaite.
Les codes d'état HTTP sont extensibles et les applications HTTP ne sont pas obligées de
comprendre la signification de tous les codes d'état enregistrés.
import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status
User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200
Exemple d'en-têtes
Les en-têtes de la réponse http peuvent être classés dans les types suivants. Vous trouverez ci-
dessous une description de l'en-tête et un exemple.
Contrôle du cache
Le champ d'en-tête général Cache-Control est utilisé pour spécifier des directives qui DOIVENT
être respectées par tout le système de mise en cache. La syntaxe est la suivante:
Cache-Control : cache-request-directive|cache-response-directive
Un client ou serveur HTTP peut utiliser le Cache-controlen-tête général pour spécifier les
paramètres du cache ou pour demander certains types de documents du cache. Les directives
de mise en cache sont spécifiées dans une liste séparée par des virgules. Par exemple:
Cache-control: no-cache
Connexion
Le champ d'en-tête général de connexion permet à l'expéditeur de spécifier les options
souhaitées pour cette connexion particulière et ne doivent pas être communiquées par des
mandataires sur d'autres connexions. Voici la syntaxe simple pour utiliser l'en-tête de connexion:
Connection : "Connection"
HTTP / 1.1 définit l'option de connexion «fermer» pour l'expéditeur pour signaler que la
connexion sera fermée après l'achèvement de la réponse. Par exemple:
Connection: close
Par défaut, HTTP 1.1 utilise des connexions persistantes, où la connexion ne se ferme pas
automatiquement après une transaction. HTTP 1.0, en revanche, n'a pas de connexions
persistantes par défaut. Si un client 1.0 souhaite utiliser des connexions persistantes, il utilise
lekeep-alive paramètre comme suit:
Connection: keep-alive
Date
Tous les horodatages HTTP DOIVENT être représentés en heure moyenne de Greenwich
(GMT), sans exception. Les applications HTTP sont autorisées à utiliser l'une des trois
représentations suivantes des horodatages:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Encodage de transfert
Le champ d'en-tête général Transfer-Encoding indique quel type de transformation a été appliqué
au corps du message afin de le transférer en toute sécurité entre l'expéditeur et le destinataire.
Ce n'est pas la même chose que le codage de contenu car les codages de transfert sont une
propriété du message, pas du corps de l'entité. La syntaxe du champ d'en-tête Transfer-Encoding
est la suivante:
Transfer-Encoding: chunked
Améliorer
L'en -tête général Upgrade permet au client de spécifier les protocoles de communication
supplémentaires qu'il prend en charge et qu'il aimerait utiliser si le serveur juge approprié de
changer de protocole. Par exemple:
Le champ d'en-tête Upgrade est destiné à fournir un mécanisme simple pour la transition de
HTTP / 1.1 à un autre protocole incompatible.
Via
L'en -tête général Via doit être utilisé par les passerelles et les mandataires pour indiquer les
protocoles intermédiaires et les destinataires. Par exemple, un message de requête peut être
envoyé d'un agent utilisateur HTTP / 1.0 à un proxy interne nommé "fred", qui utilise HTTP / 1.1
pour transmettre la requête à un proxy public sur nowhere.com, qui complète la requête en en le
transmettant au serveur d'origine à l'adresse www.ics.uci.edu. La demande reçue par
www.ics.uci.edu aurait alors le champ d'en-tête Via suivant:
Le champ d'en-tête Upgrade est destiné à fournir un mécanisme simple pour la transition de
HTTP / 1.1 à un autre protocole incompatible.
Attention
L'en -tête général Warning est utilisé pour transporter des informations supplémentaires sur l'état
ou la transformation d'un message qui peuvent ne pas être reflétées dans le message. Une
réponse peut porter plus d'un en-tête d'avertissement.
Exemple
Dans l'exemple ci-dessous, nous utilisons le module urllib2 pour obtenir une réponse en utilisant
urlopen. Ensuite, nous appliquons la méthode info () pour obtenir les informations d'en-tête pour
cette réponse.
import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close
Exemple
Dans l'exemple ci-dessous, nous utilisons l'objet PoolManager () qui s'occupe des détails de
connexion de la requête http. Ensuite, nous utilisons l'objet request () pour faire une requête http
avec la méthode POST. Enfin, nous utilisons également la bibliothèque json pour imprimer les
valeurs reçues au format json.
import urllib3
import json
http = urllib3.PoolManager()
r = http.request(
'POST',
'http://httpbin.org/post',
fields={'field': 'value'})
print json.loads(r.data.decode('utf-8'))['form']
{field': value'}
import requests
print(req.url)
https://pixabay.com/en/photos/?
q=river&min_width=800&min_height=600&order=popular
Codes d'état
SN Code et description
1 1xx: Informational
2 2xx: Success
Cela signifie que l'action a été reçue, comprise et acceptée avec succès.
3 3xx: Redirection
Cela signifie que des mesures supplémentaires doivent être prises pour terminer la demande.
Cela signifie que la demande contient une syntaxe incorrecte ou ne peut pas être satisfaite.
Cela signifie que le serveur n'a pas réussi à répondre à une demande apparemment valide.
Réponse réussie
Dans l'exemple ci-dessous, nous accédons à un fichier à partir d'une URL et la réponse est
réussie. Le code d'état renvoyé est donc 200.
import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status
User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200
Réponse infructueuse
Dans l'exemple ci-dessous, nous accédons à un fichier à partir d'une URL qui n'existe pas. La
réponse échoue. Le code d'état renvoyé est donc 403.
import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robot.txt')
print resp.data
# get the status of the response
print resp.status
import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print r
import requests
from requests_oauthlib import OAuth1
url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
auth = OAuth1('YOUR_APP_KEY', 'YOUR_APP_SECRET',
'USER_OAUTH_TOKEN', 'USER_OAUTH_TOKEN_SECRET')
requests.get(url, auth=auth)
{
"errors": [
{
"code": 215,
"message": "Bad Authentication data."
}
]
}
Mais en utilisant les valeurs appropriées pour les paramètres OAuth1, vous obtenez une réponse
réussie.
Python - Téléchargement de données
HTTP
Nous pouvons télécharger des données à partir d'un sereur en utilisant le module de python qui
gère ftp ou File Transfer Protocol. Nous pouvons également lire les données et les enregistrer
plus tard dans le système local.
Nous devons installer le module ftplib pour y parvenir.
import ftplib
import sys
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
ftp.quit()
Lorsque nous exécutons le programme ci-dessus, nous trouvons que le fichier README.nlug est
présent dans le système local à partir duquel la connexion a été initiée.
<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="ut
Exemple
Dans l'exemple ci-dessous, nous utilisons le module python netifacesqui donne les détails des
interfaces et leur état. Les méthodes utilisées sont très simples et directes.
import netifaces
print (netifaces.interfaces())
print (netifaces.ifaddresses('lo'))
print (netifaces.AF_LINK)
addrs = netifaces.ifaddresses('ens33')
print(addrs[netifaces.AF_INET])
print(addrs[netifaces.AF_LINK])
# Result
['lo', 'ens33']
{17: [{'peer': '00:00:00:00:00:00', 'addr': '00:00:00:00:00:00'}], 2:
[{'peer': '127.0.0.1', 'addr': '127.0.0.1', 'netmask': '255.0.0.0'}], 10:
[{'addr': '::1', 'netmask':
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128'}]}
17
[{'netmask': '255.255.255.0', 'addr': '192.168.232.128', 'broadcast':
'192.168.232.255'}]
[{'addr': '00:0c:29:ea:13:0a', 'broadcast': 'ff:ff:ff:ff:ff:ff'}]
1 Domain
Famille de protocoles utilisée comme mécanisme de transport. Ces valeurs sont des constantes telle
PF_UNIX, PF_X25, etc.
2 type
Type de communication entre les deux points de terminaison, généralement SOCK_STREAM pou
SOCK_DGRAM pour les protocoles sans connexion.
3 protocol
Typiquement zéro, cela peut être utilisé pour identifier une variante d'un protocole dans un domain
4 hostname
L'identifiant d'une interface réseau -
Une chaîne, qui peut être un nom d'hôte, une adresse à quatre points ou une adresse IPV6 en
éventuellement un point)
Une chaîne "<broadcast>", qui spécifie une adresse INADDR_BROADCAST.
Une chaîne de longueur nulle, qui spécifie INADDR_ANY, ou
Un entier, interprété comme une adresse binaire dans l'ordre des octets de l'hôte.
5 port
Chaque serveur écoute les clients appelant sur un ou plusieurs ports. Un port peut être un numéro d
un numéro de port ou le nom d'un service.
Le module de prise
Pour créer une socket, vous devez utiliser la fonction socket.socket () disponible dans le
module socket , qui a la syntaxe générale -
1 s.bind()
Cette méthode lie l'adresse (nom d'hôte, paire de numéros de port) au socket.
2 s.listen()
Cette méthode configure et démarre l'écouteur TCP.
3 s.accept()
Cela accepte passivement la connexion client TCP, en attendant que la connexion arrive (blocag
1 s.connect()
Cette méthode initie activement la connexion au serveur TCP.
1 s.recv()
Cette méthode reçoit un message TCP
2 s.send()
Cette méthode transmet le message TCP
3 s.recvfrom()
Cette méthode reçoit un message UDP
4 s.sendto()
Cette méthode transmet un message UDP
5 s.close()
Cette méthode ferme le socket
6 socket.gethostname()
Renvoie le nom d'hôte.
Un serveur simple
Pour écrire des serveurs Internet, nous utilisons le socketfonction disponible dans le module
socket pour créer un objet socket. Un objet socket est ensuite utilisé pour appeler d'autres
fonctions afin de configurer un serveur socket.
Appelez maintenant bind(hostname, port)pour spécifier un port pour votre service sur l'hôte
donné.
Ensuite, appelez la méthode accept de l'objet retourné. Cette méthode attend jusqu'à ce qu'un
client se connecte au port que vous avez spécifié, puis renvoie un objet de connexion qui
représente la connexion à ce client.
Un client simple
Écrivons un programme client très simple qui ouvre une connexion vers un port donné 12345 et
un hôte donné. C'est très simple de créer un client socket en utilisant la fonction de
module socket de Python .
le socket.connect(hosname, port )ouvre une connexion TCP au nom d' hôte sur le port . Une
fois que vous avez une socket ouverte, vous pouvez la lire comme n'importe quel objet IO. Une
fois terminé, n'oubliez pas de le fermer, comme vous le feriez pour un fichier.
Le code suivant est un client très simple qui se connecte à un hôte et un port donnés, lit toutes
les données disponibles à partir du socket, puis quitte -
Maintenant, exécutez ce server.py en arrière-plan, puis exécutez ci-dessus client.py pour voir le
résultat.
import socket
from pprint import pprint
# get server address
addrinfo = socket.getaddrinfo('tutorialspoint.com', 'www')
pprint(addrinfo)
# get server hostname
print socket.gethostname()
import requests
r = requests.get('https://httpbin.org/')
print(r.text)[:200]
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/31251425')
r = s.get('http://httpbin.org/cookies')
print(r.text)
{"cookies":{"sessioncookie":"31251425"}}
Erreur de traitement
Dans le cas où une erreur est déclenchée en raison d'un problème de traitement de la demande
par le serveur, le programme python peut gérer correctement l'exception déclenchée à l'aide du
paramètre timeout comme indiqué ci-dessous. Le programme attendra la valeur définie de
l'erreur de temporisation, puis lèvera l'erreur de temporisation.
requests.get('http://github.com', timeout=10.001)
import SimpleHTTPServer
import SocketServer
PORT = 8001
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
Build_URL
L'exemple ci-dessous utilise urljoinpour récupérer les différents sous-dossiers dans le chemin de
l'URL. La méthode urljoin est utilisée pour ajouter de nouvelles valeurs à l'URL de base.
https://stackoverflow.com/questions/
https://stackoverflow.com/
https://stackoverflow.com/questions/...
https://stackoverflow.com/3764299/
https://stackoverflow.com/questions/3764291?vers=1.0
https://stackoverflow.com/questions/3764291?vers=1.0#section-5.4
Exemple
Dans l'exemple ci-dessous, nous utilisons le formulaire d'inscription d'un site Web en fournissant
l'ID utilisateur et le mot de passe. Après la soumission des valeurs, nous imprimons la réponse.
import requests
ID_USERNAME = 'signup-user-name'
ID_PASSWORD = 'signup-user-password'
USERNAME = 'username'
PASSWORD = 'yourpassword'
SIGNUP_URL = 'http://codepad.org/login'
def submit_form():
"""Submit a form"""
payload = {ID_USERNAME : USERNAME, ID_PASSWORD : PASSWORD,}
resp = requests.get(SIGNUP_URL)
print "Response to GET request: %s" %resp.content
resp = requests.post(SIGNUP_URL, payload)
print "Headers from a POST request response: %s" %resp.headers
#print "HTML Response: %s" %resp.read()
if __name__ == '__main__':
submit_form()
</style>
<script src='https://www.google.com/recaptcha/api.js'></script>
<script>
function onRecaptcha(token) {
document.getElementById("editor-form").submit();
}
</script>
</head>
<body >
.....................
.....................
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
Ici, vous pouvez également fournir le nom de la base de données comme nom
spécial :memory:pour créer une base de données en RAM. Maintenant, exécutons le
programme ci-dessus pour créer notre base de donnéestest.dbdans le répertoire courant. Vous
pouvez changer votre chemin selon vos besoins. Conservez le code ci-dessus dans le fichier
sqlite.py et exécutez-le comme indiqué ci-dessous. Si la base de données est créée avec succès,
elle affichera le message suivant.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print "Table created successfully";
conn.close()
Lorsque le programme ci-dessus est exécuté, il créera la table COMPANY dans votre test.db et
il affichera les messages suivants -
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()
Lorsque le programme ci-dessus est exécuté, il créera les enregistrements donnés dans la table
COMPANY et affichera les deux lignes suivantes -
Opened database successfully
Records created successfully
Sélectionnez l'opération
Le programme Python suivant montre comment récupérer et afficher les enregistrements de la
table COMPANY créée dans l'exemple ci-dessus.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Supprimer l'opération
Le code Python suivant montre comment utiliser l'instruction DELETE pour supprimer n'importe
quel enregistrement, puis extraire et afficher les enregistrements restants de la table COMPANY.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Python - Telnet
Telnet est un type de protocole réseau qui permet à un utilisateur d'un ordinateur de se connecter
à un autre ordinateur qui appartient également au même réseau. La commande telnet est utilisée
avec le nom d'hôte, puis les informations d'identification de l'utilisateur sont saisies. Lors d'une
connexion réussie, l'utilisateur distant peut accéder aux applications et aux données d'une
manière similaire à l'utilisateur régulier du système. Bien entendu, certains privilèges peuvent
être contrôlés par l'administrateur du système qui installe et maintient le système.
En Python, telnet est implémenté par le module telnetlib qui a la classe Telnet qui a les méthodes
requises pour établir la connexion. Dans l'exemple ci-dessous, nous utilisons également le
module getpass pour gérer l'invite de mot de passe dans le cadre du processus de connexion.
Nous supposons également que la connexion est établie avec un hôte unix. Les différentes
méthodes de la classe telnetlib.Telnet utilisées dans le programme sont expliquées ci-dessous.
Telnet.read_until - Lecture jusqu'à ce qu'une chaîne donnée, attendue, soit rencontrée ou
jusqu'à ce que les secondes du délai d'attente se soient écoulées.
Telnet.write - Ecrit une chaîne dans le socket, doublant tous les caractères IAC. Cela
peut bloquer si la connexion est bloquée. Peut soulever socket.error si la connexion est
fermée.
Telnet.read_all () - Lit toutes les données jusqu'à EOF; bloquer jusqu'à la fermeture de la
connexion.
Exemple
import getpass
import telnetlib
HOST = "http://localhost:8000/"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()
Veuillez noter que cette sortie est spécifique à l'ordinateur distant dont les détails sont soumis
lorsque le programme est exécuté.
Adresse e-mail
Chaque utilisateur de messagerie se voit attribuer un nom unique pour son compte de
messagerie. Ce nom est appelé adresse e-mail. Différents utilisateurs peuvent envoyer et
recevoir des messages en fonction de l'adresse e-mail.
Le courrier électronique est généralement de la forme nom d'utilisateur @ nom de domaine. Par
exemple, webmaster@tutorialspoint.com est une adresse e-mail où webmaster est le nom
d'utilisateur et tutorialspoint.com est le nom de domaine.
Le nom d'utilisateur et le nom de domaine sont séparés par @ (at) symbole.
Les adresses e-mail ne sont pas sensibles à la casse.
Les espaces ne sont pas autorisés dans l'adresse e-mail.
Les cinq premières lignes d'un message électronique sont appelées en-tête de courrier
électronique. La partie d'en-tête comprend les champs suivants:
From
Date
To
Subject
CC
BCC
De
le From Le champ indique l'adresse de l'expéditeur, c'est-à-dire qui a envoyé l'e-mail.
Date
le Date indique la date à laquelle l'e-mail a été envoyé.
À
le To Le champ indique l'adresse du destinataire, c'est-à-dire à qui l'e-mail est envoyé.
Matière
le SubjectLe champ indique le but de l'e-mail. Il doit être précis et pertinent.
CC
CCsignifie copie carbone. Il comprend les adresses des destinataires que nous souhaitons tenir
informés, mais pas exactement le destinataire prévu.
BCC
BCCsignifie Black Carbon Copy. Il est utilisé lorsque nous ne voulons pas qu'un ou plusieurs
destinataires sachent que quelqu'un d'autre a été copié sur le message.
Salutation
La salutation est l'ouverture du message réel. Par exemple. Salut Monsieur ou Salut les gars, etc.
Texte
Il représente le contenu réel du message.
Signature
Il s'agit de la dernière partie d'un message électronique. Il comprend le nom de l'expéditeur,
l'adresse et le numéro de contact.
Python a une classe EmailMessage qui peut être utilisée pour créer des messages électroniques.
Cette classe comprend les méthodes requises pour personnaliser différentes parties du message
électronique, telles que les balises TO et FROM, la ligne d'objet ainsi que le contenu de l'e-mail.
Exemple
Dans l'exemple ci-dessous, nous créons un e-mail avec toutes les parties nécessaires d'un e-
mail. Une fois que nous imprimons le contenu du message, nous pouvons voir l'e-mail complet.
To: you@yourdomain.com
From: Learn
Python - SMTP
Le protocole SMTP (Simple Mail Transfer Protocol) est un protocole qui gère l'envoi d'un e-mail
et le routage des e-mails entre les serveurs de messagerie.
Python fournit smtplib module, qui définit un objet de session client SMTP qui peut être utilisé
pour envoyer des e-mails à n'importe quelle machine Internet avec un démon d'écoute SMTP ou
ESMTP.
Un objet SMTP a une méthode d'instance appelée sendmail, qui est généralement utilisé pour
effectuer le travail d'envoi d'un message. Il faut trois paramètres -
L' expéditeur - Une chaîne avec l'adresse de l'expéditeur.
Les destinataires - Une liste de chaînes, une pour chaque destinataire.
Le message - Un message sous forme de chaîne formatée comme spécifié dans les
diverses RFC.
Exemple
Voici un moyen simple d'envoyer un e-mail à l'aide d'un script Python. Essayez-le une fois -
#!/usr/bin/python3
import smtplib
sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Ici, vous avez placé un e-mail de base dans un message, en utilisant un triple guillemet, en
prenant soin de formater correctement les en-têtes. Un e-mail nécessite unFrom, To, et
un Subject en-tête, séparé du corps de l'e-mail par une ligne vide.
Pour envoyer le courrier, utilisez smtpObj pour vous connecter au serveur SMTP sur la machine
locale. Ensuite, utilisez la méthode sendmail avec le message, l'adresse d'expédition et l'adresse
de destination comme paramètres (même si les adresses de départ et d'arrivée se trouvent dans
l'e-mail lui-même, elles ne sont pas toujours utilisées pour acheminer le courrier).
Si vous n'exécutez pas de serveur SMTP sur votre ordinateur local, vous pouvez utiliser le
client smtplib pour communiquer avec un serveur SMTP distant. Sauf si vous utilisez un service
de messagerie Web (tel que gmail ou Yahoo! Mail), votre fournisseur de messagerie doit vous
avoir fourni les détails du serveur de messagerie sortant que vous pouvez leur fournir, comme
suit:
Exemple
Voici un exemple pour envoyer le contenu HTML sous forme de courrier électronique. Essayez-le
une fois -
#!/usr/bin/python3
import smtplib
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Python - POP3
Le protocole pop3 est un protocole de messagerie pour télécharger des messages à partir du
serveur de messagerie. Ces messages peuvent être stockés sur la machine locale.
Key Points
POP est un protocole standard Internet de la couche application.
Puisque POP prend en charge l'accès hors ligne aux messages, nécessite donc moins
de temps d'utilisation d'Internet.
POP n'autorise pas la fonction de recherche.
Pour accéder aux messages, il est nécessaire de les télécharger.
Il permet de créer une seule boîte aux lettres sur le serveur.
Il ne convient pas pour accéder aux données non électroniques.
Les commandes POP sont généralement abrégées en codes de trois ou quatre lettres.
Par exemple. STAT.
Commandes POP
Le tableau suivant décrit certaines des commandes POP:
SN Description de la commande
1 LOGIN
Cette commande ouvre la connexion.
2 STAT
Il est utilisé pour afficher le nombre de messages actuellement dans la boîte aux lettres.
3 LIST
Il est utilisé pour obtenir le résumé des messages où chaque résumé de message est affiché.
4 RETR
Cette commande permet de sélectionner une boîte aux lettres pour accéder aux messages.
5 DELE
Il est utilisé pour supprimer un message.
6 RSET
Il est utilisé pour réinitialiser la session à son état initial.
sept QUIT
Il est utilisé pour fermer la session.
Pyhton poplibmodule fournit des classes nommées pop () et pop3_SSL () qui sont utilisées pour
répondre à cette exigence. Nous fournissons le nom d'hôte et le numéro de port comme
argument. Dans l'exemple ci-dessous, nous nous connectons à un serveur gmail et récupérons
les messages après avoir fourni les informations de connexion.
import poplib
user = 'username'
# Connect to the mail box
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995')
Mailbox.user(user)
Mailbox.pass_('password')
NumofMessages = len(Mailbox.list()[1])
for i in range(NumofMessages):
for msg in Mailbox.retr(i+1)[1]:
print msg
Mailbox.quit()
Python - IMAP
IMAP est un protocole de récupération des e-mails qui ne télécharge pas les e-mails. Il les lit
simplement et les affiche. Ceci est très utile dans des conditions de faible bande passante.
Bibliothèque côté client de Python appeléeimaplib est utilisé pour accéder aux e-mails via le
protocole imap.
IMAP signifie Internet Mail Access Protocol. Il a été proposé pour la première fois en 1986.
Key Points:
IMAP permet au programme client de manipuler le message électronique sur le serveur
sans les télécharger sur l'ordinateur local.
L'e-mail est conservé et conservé par le serveur distant.
Il nous permet de prendre toutes les mesures telles que le téléchargement, la
suppression du courrier sans lire le courrier.Il nous permet de créer, manipuler et
supprimer des dossiers de messages distants appelés boîtes aux lettres.
IMAP permet aux utilisateurs de rechercher les e-mails.
Il permet un accès simultané à plusieurs boîtes aux lettres sur plusieurs serveurs de
messagerie.
Commandes IMAP
Le tableau suivant décrit certaines des commandes IMAP:
SN Description de la commande
1 IMAP_LOGIN
Cette commande ouvre la connexion.
2 CAPABILITY
Cette commande demande la liste des fonctionnalités prises en charge par le serveur.
3 NOOP
Cette commande est utilisée comme interrogation périodique des nouveaux messages ou des mises à jour de
période d'inactivité.
4 SELECT
Cette commande permet de sélectionner une boîte aux lettres pour accéder aux messages.
5 EXAMINE
C'est la même chose que la commande SELECT sauf qu'aucune modification de la boîte aux lettres n'est autor
6 CREATE
Il est utilisé pour créer une boîte aux lettres avec un nom spécifié.
sept DELETE
Il est utilisé pour supprimer définitivement une boîte aux lettres avec un nom donné.
8 RENAME
Il est utilisé pour changer le nom d'une boîte aux lettres.
9 LOGOUT
Cette commande informe le serveur que le client a terminé la session. Le serveur doit envoyer une réponse BY
fermer la connexion réseau.
Exemple
Dans l'exemple ci-dessous, nous nous connectons à un serveur Gmail avec les informations
d'identification de l'utilisateur. Ensuite, nous choisissons d'afficher les messages dans la boîte de
réception. Une boucle for est utilisée pour afficher les messages récupérés un par un et
finalement la connexion est fermée.
import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = 'username@gmail.com'
imap_pass = 'password'
# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)
## login to server
imap.login(imap_user, imap_pass)
imap.select('Inbox')
tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
tmp, data = imap.fetch(num, '(RFC822)')
print('Message: {0}\n'.format(num))
pprint.pprint(data[0][1])
break
imap.close()
Python - SSH
SSH ou Secure Socket Shell, est un protocole réseau qui fournit un moyen sécurisé d'accéder à
un ordinateur distant. Secure Shell fournit une authentification forte et des communications de
données cryptées sécurisées entre deux ordinateurs se connectant sur un réseau non sécurisé
tel qu'Internet. SSH est largement utilisé par les administrateurs réseau pour gérer les systèmes
et les applications à distance, leur permettant de se connecter à un autre ordinateur via un
réseau, d'exécuter des commandes et de déplacer des fichiers d'un ordinateur à un autre.
À mesure que les serveurs cloud deviennent plus abordables, SSH est l'outil le plus couramment
utilisé pour effectuer diverses tâches sur un serveur cloud. Nous en avons besoin pour &; moins
Configurer un serveur Web pour le site Web d'un client
Déployer le code source sur un serveur de production
En python, SSH est implémenté à l'aide de la bibliothèque python appelée fabric. Il peut être
utilisé pour émettre des commandes à distance via SSH.
Exemple
Dans l'exemple ci-dessous, nous nous connectons à un hôte et émettons la commande pour
identifier le type d'hôte. Nous capturons le résultat et l'afficherons sous forme de texte formaté.
Linux
Python - FTP
FTPou File Transfer Protocol est un protocole réseau bien connu utilisé pour transférer des
fichiers entre les ordinateurs d'un réseau. Il est créé sur une architecture client-serveur et peut
être utilisé avec l'authentification utilisateur. Il peut également être utilisé sans authentification
mais ce sera moins sécurisé. Connexion FTP qui maintient un répertoire de travail actuel et
d'autres indicateurs, et chaque transfert nécessite une connexion secondaire à travers laquelle
les données sont transférées. La plupart des navigateurs Web courants peuvent récupérer des
fichiers hébergés sur des serveurs FTP.
Méthode La description
dir ([chemin [, ... [, cb]]) Affiche la liste du répertoire du chemin. Cb de rappel facultatif passé à retrlin
lignes de stockage (cmd, f) Télécharge le fichier texte en utilisant une cmd FTP donnée - par exemple, le
storbinary (cmd, f [, bs = 8192]) Similaire à storlines () mais est utilisé pour les fichiers binaires.
supprimer (chemin) Supprime le fichier distant situé au chemin.
exception ftplib.error_temp Exception levée lorsqu'un code d'erreur indiquant une erreur temporaire (co
499) est reçu.
exception ftplib.error_perm Exception déclenchée lorsqu'un code d'erreur signifiant une erreur permane
500 et 599) est reçu.
connect (hôte [, port [, délai Se connecte à l'hôte et au port donnés. Le numéro de port par défaut est 21
d'attente]])
import ftplib
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
data = []
ftp.dir(data.append)
ftp.quit()
Changer le répertoire
Le programme ci-dessous utilise la méthode cwd disponible dans le module ftplib pour changer
de répertoire puis récupérer le contenu requis.
import ftplib
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
data = []
ftp.quit()
import ftplib
import sys
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
ftp.quit()
Lorsque nous exécutons le programme ci-dessus, nous trouvons que le fichier README.nlug est
présent dans le système local à partir duquel la connexion a été initiée.
Python - SFTP
SFTP est également connu sous le nom de protocole de transfert de fichiers SSH. Il s'agit d'un
protocole réseau qui fournit l'accès aux fichiers, le transfert de fichiers et la gestion des fichiers
sur n'importe quel flux de données fiable. Le programme est exécuté sur un canal sécurisé, tel
que SSH, que le serveur a déjà authentifié le client et que l'identité de l'utilisateur client est
disponible pour le protocole.
le pysftpmodule est une interface simple vers SFTP. Le module propose des abstractions de
haut niveau et des routines basées sur les tâches pour gérer les besoins SFTP. Nous installons
donc le module dans notre environnement python avec la commande ci-dessous.
import pysftp
with pysftp.Connection('hostname', username='me', password='secret') as
sftp:
with sftp.cd('/allcode'): # temporarily chdir to allcode
sftp.put('/pycode/filename') # upload file to allcode/pycode on
remote
sftp.get('remote_file') # get a remote file
Lorsque nous exécutons le code ci-dessus, nous sommes en mesure de voir la liste des fichiers
présents dans le répertoire allcode et également de placer et d'obtenir un fichier dans ce
répertoire.
Gunicorn
Gunicorn est un serveur Web autonome doté d'un processus maître central chargé de gérer les
processus de travail lancés de différents types. Ces processus de travail traitent et traitent
ensuite les demandes directement. Et tout cela peut être configuré et adapté pour répondre aux
divers besoins des scénarios de production.
Caractéristiques importantes
Il prend en charge WSGI et peut être utilisé avec n'importe quelle application et
framework Python WSGI exécutant
Il peut également être utilisé en remplacement de Paster (ex: Pyramid), le serveur de
développement de Django, web2py, etc.
Offre le choix de divers types / configurations de travailleurs et une gestion automatique
des processus de travail
Prise en charge de HTTP / 1.0 et HTTP / 1.1 (Keep-Alive) via des nœuds de calcul
synchrones et asynchrones
Livré avec le support SSL
Extensible avec crochets
Web tordu
Il s'agit d'un serveur Web fourni avec la bibliothèque réseau Twisted. Alors que Twisted lui-même
est "un moteur de mise en réseau événementiel", le serveur Web Twisted fonctionne sur WSGI et
est capable d'alimenter d'autres applications Web Python.
Caractéristiques importantes
Il exécute les applications WSGI Python
Il peut agir comme un framework de serveur Web Python, vous permettant de le
programmer avec le langage à des fins de service HTTP personnalisé
Il offre une capacité de prototypage simple et rapide via des scripts Python (.rpy) qui sont
exécutés sur des requêtes HTTP
Il est livré avec des capacités de proxy et de proxy inverse
Il prend en charge les hôtes virtuels
• Il peut même servir Perl, PHP et cetera
Utilisation de ftplib
Dans l'exemple ci-dessous, nous utilisons la méthode FTP pour nous connecter au serveur, puis
nous fournissons les informations d'identification de l'utilisateur. Ensuite, nous mentionnons le
nom du fichier et la méthode storbinary pour envoyer et stocker le fichier sur le serveur.
import ftplib
ftp = ftplib.FTP("127.0.0.1")
ftp.login("username", "password")
file = open('index.html','rb')
ftp.storbinary("STOR " + file, open(file, "rb"))
file.close()
ftp.quit()
Lorsque nous exécutons le programme ci-dessus, nous observons qu'une copie du fichier a été
créée sur le serveur.
Utilisation de ftpreety
Semblable à ftplib, nous pouvons utiliser ftpreety pour se connecter en toute sécurité à un
serveur distant et télécharger un fichier. Nous pouvons également télécharger le fichier en
utilisant ftpreety. Le programme ci-dessous illustre la même chose.
Lorsque nous exécutons le programme ci-dessus, nous observons qu'une copie du fichier a été
créée sur le serveur.
Exemple
Dans l'exemple ci-dessous, nous utilisons une adresse proxy pour accéder au site Web
twitter.con pour un accès anonyme. Le statut de réponse OK prouve l'accès réussi via un serveur
proxy.
import urllib
URL = 'https://www.twitter.com'
PROXY_ADDRESS = "265.24.11.6:8080"
if __name__ == '__main__':
resp = urllib.urlopen(URL, proxies = {"http" : PROXY_ADDRESS})
print "Proxy server returns response headers: %s " %resp.headers
file: abcl.htm
dir: allbooks
link: ulink
Veuillez noter que le contenu ci-dessus est spécifique au système sur lequel le programme
python a été exécuté. Le résultat variera en fonction du système et de son contenu.
(6, 'entries:')
INDEX
README
acedb
dna-mutations
ecology+evolution
molbio
Exécuter un serveur
Le langage python est livré avec un serveur intégré que nous pouvons exécuter en tant que
serveur local. Le script pour exécuter ce serveur se trouve sous le dossier bin de l'installation de
python et nommé classic.py. Nous pouvons l'exécuter dans l'invite python et vérifier son
exécution en tant que serveur local.
python bin/classic.py
Exécuter un client
Ensuite, nous exécutons le client à l'aide du module rpyc pour exécuter un appel de procédure à
distance. Dans l'exemple ci-dessous, nous exécutons la fonction d'impression sur le serveur
distant.
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('Hello from Tutorialspoint')")
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')
6.283185307179586
Exemple
Dans l'exemple ci-dessous, nous créons un serveur JSON simple et y créons une fonction. Cette
fonction divise une liste plus grande en listes plus petites mentionnant la longueur de l'argument
ainsi que l'argument lui-même.
# server program
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
def findlen(*args):
res = []
for arg in args:
try:
lenval = len(arg)
except TypeError:
lenval = None
res.append((lenval, arg))
return res
def main():
server = SimpleJSONRPCServer(('localhost', 1006))
server.register_function(findlen)
print("Start server")
server.serve_forever()
if __name__ == '__main__':
main()
# Call by client
from jsonrpclib import Server
def main():
conn = Server('http://localhost:1006')
print(conn.findlen(('a','x','d','z'), 11, {'Mt. Abu': 1602, 'Mt.
Nanda': 3001,'Mt. Kirubu': 102, 'Mt.Nish': 5710}))
if __name__ == '__main__':
main()
[[4, [u'a', u'x', u'd', u'z']], [None, 11], [4, {u'Mt. Abu': 1602, u'Mt.
Kirubu': 102, u'Mt. Nanda': 3001, u'Mt.Nish': 5710}]]
Installation de pygeocoder
pip install pygeocoder
Structure d'alimentation
Dans l'exemple ci-dessous, nous obtenons la structure du flux afin de pouvoir analyser plus en
détail les parties du flux que nous voulons traiter.
import feedparser
NewsFeed =
feedparser.parse("https://timesofindia.indiatimes.com/rssfeedstopstories.cm
s")
entry = NewsFeed.entries[1]
print entry.keys()
import feedparser
NewsFeed =
feedparser.parse("https://timesofindia.indiatimes.com/rssfeedstopstories.cm
s")
print 'Number of RSS posts :', len(NewsFeed.entries)
entry = NewsFeed.entries[1]
print 'Post Title :',entry.title
import feedparser
NewsFeed =
feedparser.parse("https://timesofindia.indiatimes.com/rssfeedstopstories.cm
s")
entry = NewsFeed.entries[1]
print entry.published
print "******"
print entry.summary
print "------News Link--------"
print entry.link