Page 1 sur 1

[R] Outils reconnaissance IP en quelque seconde

Posté : dim. 30 oct. 2011 21:43
par locos974
Bonjour,

J'ai eu cette idée une GUI permettant que quand l'on clique sur le bouton OK soit :
- Cela dévoile notre IP local et Ip internet ou deux bouton Ok le 1er = Ip local et le 2éme = Ip internet

Voici le début de mon code très peu développé ( Que la GUI..).
Je pensais que cela aller être simple mais la preuve que non..
Je pensais aussi le faire par cmd mais aucune réussite sinon un site pour l'ip : mon-ip.com
► Afficher le texte


Cordialement.

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : dim. 30 oct. 2011 21:54
par jchd
Aucun problème pour l'IP locale. Par contre, il te faut "sortir" pour voir ton IP Internet. Tu es généralement derrière un NAT.
Un peu comme quand un pilote de F1 veut prendre une photo de profil de lui-même conduisant sa bête...

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : dim. 30 oct. 2011 21:59
par locos974
Donc pour vous le mieux pour l'ip local et l'inviter de commande ou mon-ip.com ?

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : dim. 30 oct. 2011 23:00
par jeanmimigab
hello,

regarde ici pour récupérer l'IP via un Serveur dynamique et un petit Script.vbs
http://biblio.scl.free.fr/lire.php?doc=IP_script

:wink:

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : dim. 30 oct. 2011 23:15
par moi
ou alors grace a une partie de ce petit script de TT22 : http://autoitscript.fr/forum/viewtopic. ... ilit=fobec...

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 09:24
par locos974
Pour le Script Autoit il faut déjà avoir sont IP or moi je veux la dévoilé avec mon script..

Sinon pour le script Vbs comment je récupère les donnée pour qu'il s'inscrive dans ma GUI ?
EDIT : sans ouvrir de programme en ayant que la GUI présente.

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 09:54
par mikell

Code : Tout sélectionner

Global $my_IP
my_IP()
Msgbox(0,"", $my_IP)

Func my_IP()
Local $oHTTP1 = 0
$my_IP = "0.0.0.0"
$oHTTP1 = ObjCreate("Microsoft.XMLHTTP")
$oHTTP1.Open("GET","http://automation.whatismyip.com/n09230945.asp",0)
$oHTTP1.Send()
If $oHTTP1.Status = 200 Then $my_IP = $oHTTP1.Responsetext 
$oHTTP1 = 0
EndFunc

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 10:26
par locos974
Et comment je rattache ce code au miens ?

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 10:45
par pierrotm777
Je vous propose ceci:
► Afficher le texte

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 11:09
par locos974
Merci beaucoup. J'avais essayé mais oublié une ligne ^^.

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 13:30
par matwachich
Euuuuhhh... et la doc, vous connaissez??? Vous savez, la touche F1...
Une simple recherche dans la doc avec mot clé "ip" nous donne en 6e résultat: _GetIP
Et en 3e résultat: la liste des macros AutoIt avec celle-ci

Code : Tout sélectionner

[b]@IPAddress1[/b] - IP address of first network adapter. Tends to return 127.0.0.1 on some computers.
[b]@IPAddress2[/b] - IP address of second network adapter. Returns 0.0.0.0 if not applicable. 
[b]@IPAddress3[/b] - IP address of third network adapter. Returns 0.0.0.0 if not applicable. 
[b]@IPAddress4[/b] - IP address of fourth network adapter. Returns 0.0.0.0 if not applicable. 
 

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 15:19
par locos974
Alors là j'apprend une nouvelle chose le fameux F1 :mrgreen:

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 17:25
par mikell
@matwachich
Franchement je préfère mon script à _GetIP() :shock:
D'ailleurs dans l'aide ya pratiquement le même avec Winhttprequest dans la COM Reference

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 20:04
par TT22
Et ça :

Code : Tout sélectionner

#include <String.au3>
$source1 = BinaryToString(InetRead("http://adresseip.sur-la-toile.com/",1))
$IP = _StringBetween($source1,"<h1>Votre adresse IP est ","</h1>")
MsgBox(64,"IP","Votre adresse IP internet est : "&$IP[0]&@CRLF&"Et votre adresse IP réseau est : "&@IPAddress1)

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 20:28
par Iste
mikell a écrit :@matwachich
Franchement je préfère mon script à _GetIP() :shock:
D'ailleurs dans l'aide ya pratiquement le même avec Winhttprequest dans la COM Reference
_GetIP() a pourtant de tres bons points de son coté :
- il s'agit d'une fonction présente dans les udf de bases donc évoluera avec AutoIt. Il est de plus souvent déconseillé de réinventer la roue.
- il exploite plusieurs sources.
- le code est mieux construit.
- il n'utilise pas de code externe.

Le votre est juste mieux dans sa façon de récupérer l'ip. Pas de découpe moche sur une page qui risque de changer.

Pour rendre ce code meilleur, déja, transformez votre procédure en fonction. Retourner l'ip et ne pas setter une variable globale, c'est plutôt crade.
Ensuite, n'utilisez pas l'objet Microsoft.XMLHTTP. Il est bien sympa mais AutoIt sais récupérer des sources par lui même. Laissez le faire. D'autant plus qu'étant compatible pour un large spectre d'os windows, c'est a l'interpréteur de gérer la compatibilité, ce que vous lui empêchez de faire.
Enfin, rajoutez d'autre sources, même si il faut chez elle découper du html.
A ce sujet, mieux vaut utiliser une regexp pour sortir l'ip que de découper du html qui risque fortement de changer.

edit : n'oubliez pas qu'il n'y a pas que les site spécialisés dans ce domaine qui peuvent nous donner l'info :
http://autoitscript.fr/ip.php
http://googlesystem.blogspot.com/2011/1 ... dress.html

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : lun. 31 oct. 2011 21:55
par mikell
Iste a écrit :Pour rendre ce code meilleur, déja, transformez votre procédure en fonction. Retourner l'ip et ne pas setter une variable globale, c'est plutôt crade.
Heu je n'avais pas l'intention de livrer un script clés en main, c'était juste pour montrer une méthode de manière très basique (charge à l'utilisateur d'en faire ensuite ce qu'il veut), et je suis surpris que vous ne l'ayez pas compris
Personnellement je n'ai aucun contentieux avec _GetIP, je n'ai certainement pas la prétention de faire aussi bien que les développeurs d'AutoIt mais j'aime bien Microsoft.XMLHTTP (et Winhttp.WinHTTPrequest.5.1 aussi d'ailleurs) alors je ne vois pas pourquoi je m'en priverais...
Que mon bout de code soit "mieux" ou pas, on s'en fout, c'est pas le but. Montrer une méthode alternative ça peut être intéressant, on râle tout le temps après les gens qui font du copier-coller sans chercher à comprendre, alors vous pouvez concevoir que "laissez faire autoit" n'est pas un argument qui me touche spécialement, même si c'est une solution à la fois plus "propre" et plus facile
Idem, j'utilise un site pour avoir l'IP, vous en utilisez d'autres, et après ? chacun ses goûts... :roll:

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : mar. 01 nov. 2011 00:54
par Iste
Que les choses soient claires, je n'ai rien contre votre script, qui marche et n'est pas mauvais (pas de ligne inutile ou de bout de code a "risque")
Et bien évidement, un bon exemple de plus ne peut être que bénéfique pour le forum. C'est pour cela que je n'ai rien répondu a ce moment, d'autant plus que le sujet semblait être clos.

Ce sur quoi j'ai réagit est le fait qu’après que matwachich ai cité _GetIP() vous disiez préférer votre fonction sans vraiment expliquer pourquoi.
Et la, que vous préférez la votre ne me dérange en rien, chacun ses choix, mais il faut par la suite argumenter affin d'expliquer pourquoi.

Mettant les deux fonctions cote a cote j'en ai tiré les bon points que j'ai vu.
Mon 3em § est plus une notice pour améliorer la fonction qu'une réponse directe pour vous la faire changer.

Donc oui, a ce niveau on ne cherche pas a savoir quelle fonction est mieux que l'autre, mais on ne se fiche pas de savoir les avantages des différentes solutions a partir du moment ou quelqu'un dit en préférer une.

Sinon, en effet, il ne faut pas tout copier coller, mais il faut comprendre qu'il y a deux types de code :
- du code propre a son scripte
- du code généraliste
Avec AutoIt cette différence est tres marqué (code principal vs fonctions)
C'est uniquement le code propre a son scripte que l'on ne doit pas copier coller. Les outils développés par d'autre eux ne doivent pas être réinventé sans raison. Et dans ce cas précis, on parle d'un outil.
Vous devez bien comprendre cela, car pour remplacer les fonctions livrées avec AutoIt il faut de bon arguments.
Libre a vous de faire ce que vous voulez dans vos script, mais pour le forum, il vaut mieux essayer de donner les meilleur réponses possible pour les débutant qui les liront.

Pour le site, bah justement je dis que le votre est tres bien... Mais qu'il vaut mieux ne pas se limiter a un seul. Pour cela je donne pas d'autre site, mais d'autre idée pour en trouver.

Bref, sinon, vous auriez pu simplement défendre votre point de vu. Car comme je l'ai dis, pour réinventer la roue il faut avoir des arguments, et vous auriez pu en sortir de tres bons !
Par exemple, _GetIP() est une vielle fonction antérieur a InetRead() et utilise donc des fichiers.
_GetIP() découpe les chaine html pour trouver l'ip, si jamais http://www.whatismyip.com localise mon ip pour me répondre en français, le script ne marchera plus.
Enfin, l'utilisation de InetGet() ou InetRead() peut etre bloqué par les site utilisés si un jour, il décide de ne pas suporter les scripts AutoIt (qui ne cliquent pas sur les pubs) ou si HttpSetUserAgent() est mal utilisé.

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : mar. 01 nov. 2011 01:42
par mikell
Hmm je comprends, mais réinventer la roue ça aurait été refaire l'équivalent d'une _GetIP avec de l'InetGet, une collection de StringMachin et création de fichier temporaire Image
Je vous remercie pour les excellents arguments que vous donnez et qui auraient dû être les miens si j'avais été informaticien, programmeur enfin ce genre de trucs mais professionnellement j'en suis à des kilomètres, il me manque donc qques compétences...
Non en fait les raisons de ma préférence sont bêtement triviales, c'est juste que l'idée de balancer environ 800 Ko d'includes simplement pour récupérer une adresse IP me dérange Image donc plutôt que de réinventer l'outil (ce que je ne fais absolument pas, ne vous en déplaise) je préfère en utiliser un autre, différent
Ou alors pour le plus grand bien du forum il faudrait expliquer aux débutants qu'il vaut mieux décortiquer l'include Inet.au3 pour en extraire la seule fonction _GetIP, mais alors quoi ? on ne laisse donc plus faire AutoIt ? bah c'est cornélien ... :mrgreen:

Re: [..] Outils reconnaissance IP en quelque seconde

Posté : mar. 01 nov. 2011 16:03
par Iste
En programmation réinventer la roue, ca veut pas dire faire quelque chose de rond, mais quelque chose qui prend les même paramètre et en sort le "même" résultat.
Refaire la même fonction avec les même outils, c'est soit de l'optimisation, soit idiot ^^'
La seule différence entre votre fonction et celle fourni, est le passage par une variable globale.
A part cela, aucune différence vu de l’extérieur de la boite noire, donc a part les quelque cas ou cela peut etre utile, on a bien la un superbe nouveau prototype de roue !

Sinon, en effet, ne pas vouloir ajouter d'include pour si peu est un bon argument. Car si en théorie cela n'est pas censé être dangereux, en AutoIt ca peut le devenir tres rapidement (et même avec les udf livrées dans le pack)

Sinon oui, je pense que les débutants devraient regarder le code des fonctions qu'ils utilisent, mais AutoIt est un peu particulier car s'adressant a un public qui cherche en général a en finir le plus vite possible.

Mais dans tout les cas, AutoIt ne fait pas le code ! Par le laisser faire j’entends juste ne pas recréer les fonctions qui existent déjà, surtout les fonctions internes mais aussi les UDF de base qui ont eu le temps d’être examiner par de nombreuses personnes.

Mis a part ca, vous avez largement les compétences pour faire ces comparaisons, il faut juste prendre son temps et réfléchir aux conséquences.