|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Bonjour à tous,
Je rencontres un petit soucis dans le cadre d'un script. Celui ci à pour but de scanner une plage d'adresses IP afin de retourner le nom de domaine correspondant grace à un socket.gethostbyaddr(ip). J'ai donc une variable de type liste 'list' (list = [192.9.202.1, 192.9.202.2, ...] avec toutes les IP, voici comment je fonctionnes (j'utilise le threading pour que les requêtes soit effectué simultanément) : Code :
Comment est il possible d'enregistrer les résultats, tout en liant l'ip + name et de pouvoir réorganiser sa avec les adressis ip par ordre croissant ? Dictionnaire ? Tuple ? N'ayant pas trop utilisé ceux ci je vous avou être en difficulté ... |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 766 ![]() |
Bonjour,
Donne un exemple de la liste 'avant', et le résultat que tu souhaites 'après'.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
00
|
|
|
#3 | |||||
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 495 ![]() |
Citation:
Moi je passerais par un dictionnaire de type "ip" => "name". Exemple Code python :
Ensuite, en utilisant sorted(final.keys(), fct) ça te donnerait les IP par ordre croissant (à toi de programmer la fonction "fct" pour que sorted connaisse ta façon de comparer 2 IP) ce qui amènerait automatiquement les noms associés... Exemple Code python :
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|||||
|
|
00
|
|
|
#4 | ||||
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Salut,
pour trier de l' ip, le plus simple est de s'arranger pour le faire en mode texte, mais en formatant les ips. Par exemple trier '127.0.0.1' et '127.255.0.0' ne donnera pas forcément le même résultat que trier '127000000001' et '127255000000'. En python on a hérité du printf du C, le "f" de printf signifiant format. Code :
Code :
A+ Pfeuh |
||||
|
|
00
|
|
|
#5 | ||||||
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Bonjour,
Merci pour vos réponses. Alors voilà comment ma liste est construite : Code :
La solution de Svear est ce que je recherches je penses. Le but étant simplement de pouvoir réorganiser les IP une fois qu'un nom lui à été attribué par la requête. Par exemple pour réorganiser une liste comme celle ci : Code :
Code :
Merci bien. |
||||||
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Pour info.
Python 3.3 vient avec le module "ipaddress" - ce module doit pouvoir être installé sur des versions antérieures. Il contient des tas de fonctions pour convertir des adresses IPv4 et v6 dans tous les sens. Si vous voulez convertir des adresses IP en entiers (et les ranger par ordre croissants par exemple) : Code :
Code :
=> ranger par s/réseau puis par numéro de "host" est une autre façon de faire. - W
__________________
Architectures Post-Modernes |
||||
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 766 ![]() |
Bonjour,
Intéressant, merci wiztricks. Il s'agit en fait de convertir en décimal un nombre écrit en base 256, et vice versa: Code :
Code :
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||||
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Salut,
Citation:
Mais en exprimant les s/réseau, on y perd vite son latin. En fait, le module inclus la comparaison d'adresses et ces objets sont hashables. On peut donc écrire: Code :
Vous pouvez bien sur faire votre cuisine à vous. Il n'est jamais inutile de comprendre comment çà marche. Mais si ce module a été intégré à la PSL, c'est en général suite à de nombreuses discussions pour valider que l'API répondait à de nombreux cas d'utilisation. Et çà fait toujours çà de moins à maintenir, documenter, tester,.. - W
__________________
Architectures Post-Modernes |
|||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : mars 2007 Messages : 851 ![]() |
Personne ne tique sur la mutation d'une liste sans lock dans les threads ? Il se peut que ça ne pose pas de problème ici, si on se contente de faire un append, mais je ne prendrais pas ça pour acquis...
|
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Citation:
En fait, je ne suis pas sûr que .gethostbyaddr puisse s'exécuter en parallèle. Ca doit sérialiser sur un verrou de l'OS protégeant ses structures partagées. - W
__________________
Architectures Post-Modernes |
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Inscription : mars 2007 Messages : 851 ![]() |
Citation:
Je me demandais plutôt si le GIL était libéré lors de l'appel à append. |
|
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Citation:
Citation:
- W
__________________
Architectures Post-Modernes |
||
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Bonjour
Je suis en plein de test de ce que Svear m'avait montré. Concernant ta remarque Wiz, sur le module "ipadress", je n'utilises pas python 3.x car enfaite derrière j'ai besoin de la bibliothèque pour les fichiers excels qui il me semble n'est pas disponible avec python 3.x ... Par contre là "Personne ne tique sur la mutation d'une liste sans lock dans les threads ?" vous m'avez un peu perdu Enfête j'ai utilisé les threads, car imaginons que j'avais 50ip à faire, c'était super long, car il attend que le premier gethostbyaddr() se finisse ... alors quand y'a pas de réponse et que du coup il attend ... je vous laisses imaginer |
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Salut,
En fait ce sont de faux problèmes. Désolé pour avoir semé la confusion dans votre esprit. - W
__________________
Architectures Post-Modernes |
|
|
00
|
|
|
#15 | ||
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Bonjour,
Je reviens vers vous car je n'arrives pas à trouver une solution ... Actuellement j'ai pensé à ceci. J'ai ma list_ip = ['192.9.202.1','192.9.202.2','19.9.202.3','192.9.202.4','192.9.202.5'] qui est dans l'ordre et que j'utilises pour faire les requêtes ET list_dic = {'192.9.202.3' : 'toto', '192.9.202.2' : 'titi', '192.9.202.5' : 'tutu', '192.9.202.4' : 'tata', '192.9.202.1' : 'tyty'}. Je me suis donc dit qu'en utilisant les deux j'aurais moyen de faire sa : Code :
|
||
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Je ne vois pas trop ce que vous cherchez à faire avec l'instruction
if x == z in list_ip: "z in list_ip" retourne un boolean alors que x est un "str". Si votre soucis est de préserver l'ordre, pourquoi ne pas utiliser un OrderedDict? C'est un dict dans le module collection qui devrait être dispo en 2.7 - W
__________________
Architectures Post-Modernes |
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 690 ![]() |
Je ne vois pas trop ce que vous cherchez à faire avec l'instruction
if x == z in list_ip: "z in list_ip" retourne un boolean alors que x est un "str". Si votre soucis est de préserver l'ordre, pourquoi ne pas utiliser un OrderedDict? C'est un dict dans le module collection qui devrait être dispo en 2.7 - W
__________________
Architectures Post-Modernes |
|
|
00
|
|
|
#18 | ||
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Re,
J'ai donc essayé OrderedDict mais sa ne fonctionne pas pour mon problème ... Code :
|
||
|
|
00
|
|
|
#19 | ||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 766 ![]() |
Bonjour,
Voilà une solution avec OrderedDict (Python 2.7): Code :
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||
|
|
00
|
|
|
#20 | ||
|
Futur Membre du Club
![]() Inscription : août 2011 Messages : 45 ![]() |
Merci Tyrtamos ! J'avais pensé à refaire un split des ip comme j'ai fait pour générer la plage d'ip, j'étais entrain d'essayer de faire fonctionner sa. Un grand merci à vous !
Par contre j'aurais une petite question à ce sujet : Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com