Table des matières
Python En tant que langage de programmation, il est très puissant, il nous permet de réaliser des actions et d'obtenir des résultats très importants lors de la manipulation des différentes caractéristiques de notre équipement, ce que nous pouvons réaliser grâce au Adresses IP, ports et sockets. Chacune nous permet d'atteindre un point différent et tout aussi important au sein de la structure du réseau.L'un des environnements où Python s'est renforcé dans le développement de programmes pour le réseau, car grâce à ses classes de gestion des sockets, nous pouvons utiliser la structure du réseau à notre avantage, cette structure peut être locale ou via l'Internet, ce qui nous donne une grande polyvalence et puissance dans les programmes que nous pouvons réaliser.
La bibliothèque de socketsC'est le premier arrêt que nous devons faire, cette bibliothèque apporte des fonctionnalités basées sur cours et en instances, ce qui signifie que nous pouvons utiliser certaines choses sans créer d'objets.
Cela peut ne pas faire beaucoup de différence pour nous, cependant la possibilité de travailler sans instances ouvre des possibilités telles que la création de scripts plus courts et nous permettant d'utiliser des outils puissants sans ajouter de complexité supplémentaire à notre code.
Ce premier exercice est très intéressant, car à partir de la console de commande de notre système, nous pourrons obtenir des informations de notre propre équipement en utilisant Python et quelques lignes de code.
ExigencesComme exigence, nous devons avoir installé l'interprète de Python dans notre machine pour pouvoir exécuter les exemples que nous allons montrer dans ce tutoriel.
Le code que nous avons écrit s'exécute sur le version 2.7 de Python donc certaines modifications peuvent être nécessaires si une version différente est utilisée. Un outil qui peut nous aider avec les problèmes de compatibilité de version est Virtualenv qui nous permet d'exécuter différentes versions de Python dans des installations indépendantes sans avoir besoin de configurations complexes pour le faire.
Tout d'abord, nous allons ouvrir notre console de commande et nous allons entrer dans le Borne interactive PythonPour ce faire, si nous avons correctement installé le langage, nous n'avons qu'à placer le mot python et nous y aurons accès :
Nous devons d'abord importer notre bibliothèque, pour cela nous utiliserons la commande suivante :
socket d'importation
Ensuite, nous pouvons commencer à collecter les informations que nous voulons, pour cela, nous n'avons qu'à savoir ce que nous recherchons, par exemple pour obtenir le nom de notre équipe, nous devons simplement écrire ce qui suit :
nom_ordinateur = socket.gethostname ()
Ensuite, nous pouvons imprimer la variable à l'écran pour voir son contenu, pour cela nous appelons simplement la méthode imprimer:
print "Le nom de l'ordinateur est :% s"% nom_ordinateur
Cela devrait nous donner un résultat comme le suivant dans notre borne interactive :
host_address = socket.gethostbyname (host_name)
Ceci fait, nous imprimons la variable précédente :
print "L'IP est :% s"% computer_address
Voyons à quoi cela ressemble dans notre terminal :
Ce qui précède est assez pratique, mais il n'est pas très utile dans sa présentation, car nous ne pouvons pas y accéder fréquemment, mais nous aurions besoin de le saisir ligne par ligne, pour éviter ce problème, nous allons créer un vrai programme qui nous donne le informations que nous savons jusqu'à présent obtenir.
Pour cela, nous aurons besoin d'un éditeur de texte brut, nous recommandons SublimeText 2 et un emplacement où nous pouvons héberger notre programme et qui est à portée de notre installation de Python avec leurs autorisations correspondantes.
Pour parvenir à une amélioration nous allons créer une fonction qui nous permet d'appeler nos instructions de manière récurrente sans avoir à écrire tout le code à chaque fois, puis dans notre nouveau fichier que nous appellerons team_information.py nous allons placer le contenu suivant :
#! / usr / bin / env Python import socket def get computer_info (): nom_ordinateur = socket.gethostname () adresse_ordinateur = socket.gethostbyname (nom_ordinateur) print "le nom de l'ordinateur est :% s"% nom_ordinateur print "L'adresse IP est : % s "% computer_address if __name__ == '__main__' : get_team_info ()
Il est très important que nous respections les tabulations et les indentations du code car c'est la seule façon dont Python peut reconnaître les changements de bloc, si nous utilisons Texte sublime Nous n'aurons pas à nous inquiéter puisqu'il nous permet de vérifier visuellement les indentations de notre code :
Dans ce cas nous allons modifier un peu notre programme précédent, dans un nouveau fichier maintenant appelé informations_distantes.py nous allons placer les éléments suivants :
#!/usr/bin/env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "L'ordinateur distant est :% s"% remote_computer print "L'adresse IP est :% s"% socket.gethostbyname (remote_host) sauf socket.error, err_msg: print "% s:% s"% (remote_host, err_msg) if __name__ == '__main__': get_remote_host_info ()
Ce que nous avons fait, c'est simplement indiquer le nom d'un hôte distantComme nous n'avons rien à prouver, nous pouvons utiliser un site Internet connu pour en obtenir des informations, dans cet exemple nous utiliserons l'adresse de Google, dans ce cas le nom de notre équipe sera URL et en utilisant la même méthode gethostbyname () nous aurons l'information.
Nous avons également ajouté un gestionnaire d'erreurs au cas où nous rejetterions l'adresse que nous avons placée et connaissions ainsi les causes, enfin lorsque nous l'exécuterons dans notre console, nous obtiendrons ce qui suit :
Formats populairesIl existe deux formats très populaires pour les adresses IP, le premier est inet_aton () qui est une version compressée de l'IP et ce qui suit est inet_ntoa () qui est le contraire et est une version non packagée de l'IP.
Chacun a ses utilisations dans les programmes, cependant ce n'est pas le sujet principal de ce tutoriel, la seule chose supplémentaire que nous pouvons indiquer est que ces formats et leurs fonctions ne s'appliquent qu'aux IPv4, au lieu de IPv6 d'autres s'appliquent.
Nous allons construire un nouveau programme qui nous permet de faire cette conversion :
#! / usr / bin / env Python import socket de binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') pour dir_ip dans [remote_host_a, remote_host_b] :packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packed_ip) print "IP Address:% s => Packed:% s, Not Packed:% s"% (dir_ip, hexlipify (packed_ip ) ), unpacked_ip) si __name__ == '__main__': format_ip_address ()
Ici, nous recommençons notre programme en important la bibliothèque prise, puis nous importons une bibliothèque appelée hexlifier qui nous permet d'établir une conversion de formats hexadécimaux, afin qu'ils soient lisibles, nous allons l'utiliser pour pouvoir décrypter les adresses IP. Pour rendre cela plus intéressant, nous avons placé deux ordinateurs distants à partir desquels nous allons obtenir les adresses IP et avec un pour boucle nous allons parcourir les deux, au sein de l'itération, nous pouvons ensuite effectuer les conversions avec les formats d'adresse IPv4 que nous avons obtenu.
Enfin nous faisons une impression de chacun, pour cela nous nous sommes appuyés sur les méthodes inet_aton () et inet_ntoa () à la fois de la bibliothèque de sockets, ce qui est important de se rappeler qu'elle est basée sur les classes et non sur les instances.
Voyons à quoi tout cela ressemble lorsque nous exécutons le fichier précédent dans notre console de commande :
ImportantUne recommandation importante est que nous devrions utiliser la documentation lorsque nous avons des questions et grâce à la grande communauté de Python Sur Internet, nous pouvons pratiquement trouver une solution à tout doute ou problème auquel nous sommes confrontés.
Avec cela, nous terminons ce tutoriel, c'est juste une entrée à ce qui est la programmation pour les réseaux avec PythonCependant, il est assez utile de savoir qu'à partir de nos programmes, nous pouvons manipuler des informations à la fois de nos ordinateurs et d'ordinateurs distants, ceci sans avoir à faire des inclusions supplémentaires à partir de bibliothèques ou de plusieurs lignes de code pour l'obtenir.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif