Page 1 sur 1
[R] Nom d'Hôte
Posté : mar. 25 janv. 2011 22:49
par Yle
Bonsoir,
Il m'est possible de connaître avec AutoIt mon adresse IP : _Getip()
Existe t-il une solution pour récupérer mon nom d'Hôte ?
du style ARouen-252-1-101-79.w90-23.abo.wanadoo.fr pour un abonné Orange
Re: [..] Nom d'Hôte
Posté : mar. 25 janv. 2011 23:25
par FernandG
Bonsoir,
Vous trouverez votre bonheur dans la fonction
_TCPIpToName :
Voici un exemple de code :
Code : Tout sélectionner
#include <inet.au3>
#include <array.au3>
Dim $my_hostname, $my_ip
$my_ip = _GetIP()
$my_hostname = _TCPIpToName ($my_ip, 1)
If Not @error Then
MsgBox(64, "Information IP/DNS", "Le hostname pour l'adresse " & $my_ip & " est :" & @CRLF & $my_hostname[1])
EndIf
Bonne soirée.
Re: [..] Nom d'Hôte
Posté : mer. 26 janv. 2011 14:48
par Yle
J'avais bien vu cette fonctionnalité qui me renvoit : LiveBox qui est effectivement mon nom d'Hôte.
Mais si sous DOS, j'envoie ces 2 commandes :
Ping -a ARouen-252-1-114-79.w90-23.abo.wanadoo.fr
Envoi d'une requˆte 'ping' sur ARouen-252-1-114-79.w90-23.abo.wanadoo.fr [90.23.177.79] avec 32 octets de donn‚esÿ:
Réponse de 90.23.177.79: octets=32 temps=3 ms TTL=64
Ping -a 90.23.177.79
Envoi d'une requête 'ping' sur livebox [90.23.177.79] avec 32 octets de donn‚esÿ:
Réponse de 90.23.177.79: octets=32 temps=74 ms TTL=64
On voit bien que LiveBox = Adresse Ip 90.23.177.79 = aussi ARouen-252-1-114-79.w90-23.abo.wanadoo.fr mais ce nom DNS, comment le récupérer ?
En fouillant le forum, j'ai vu que si on clique sur cette URL du site de Zebulon:
http://www.zebulon.fr/outils/scanports/quick_scan.php
Lui arrive à récupérer cette valeur (avec du PHP)
Si qq a une idée ?
Re: [..] Nom d'Hôte
Posté : mer. 26 janv. 2011 17:22
par FastFrench
Bonjour,
voici deux pistes plus compliquées:
1/ Pour obtenir l'info, une solution est d'utiliser la commande DOS NSLookUp, qui renvoie précisément cette information.
Exemple d'utilisation:
http://www.autoitscript.com/forum/topic ... -nslookup/
2/ Autre solution plus élégante : trouver un moyen d'appeler directement la fonction système gethostbyaddr ou getnameinfo (Ws2_32.dll)
http://msdn.microsoft.com/en-us/library/ms738521
Cela pourrait donner qqc dans le style suivant (voir en fin du fil, à debugger):
http://www.autoitscript.com/forum/topic ... port-info/
Mais en fait, tout ça est inutile, car la solution la plus simple déjà indiquée fonctionne visiblement sans problème.
Ainsi le script suivant:
Code : Tout sélectionner
#include <Inet.au3>
TCPStartup()
MsgBox(0, "Host Name", "Host Name is: " & _TCPIpToName("90.23.177.79") )
j'obtiens bien:
Host Name is: arouen-252-1-114-79.w90-23.abo.wanadoo.fr
Donc si chez vous la réponse est autre (un nom simplifié), cela est peut-être dû à des alias définis dans un fichier système (host ou lmhost dans C:\Windows\System32\drivers\etc).
FF
Re: [..] Nom d'Hôte
Posté : mer. 26 janv. 2011 19:53
par sylvanie
Bonsoir,
perso je passerai par un nslookup avec un petit nettoyage de la sortie :
► Afficher le texte
Code : Tout sélectionner
#include <INet.au3>
#include <Constants.au3>
$ip=_Getip()
ConsoleWrite("IP = "&$ip&@CRLF)
$name=""
$pid=Run(@ComSpec&' /c nslookup '&$ip&' | find "Nom"',@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
While 1
$name &= StdoutRead($pid)
If @error Then ExitLoop
WEnd
$name=StringRegExpReplace($name,"Nom\s+:\s+","")
ConsoleWrite("Nom = "&$name&@CRLF)
Re: [..] Nom d'Hôte
Posté : jeu. 27 janv. 2011 21:19
par Yle
Eh oui chez moi, la réponse est systématiquement "LiveBox" sans avoir aucun Alias dans fichier Host ou autre sous .../drivers/etc... quand je fais un _TCPIpToName("90.23.177.79")
Si je fait un _TCPIpToName("90.24.177.79") d'une autre adresse, là j'obtiens bien un nom DNS : AMontsouris-651-1-66....
D'autre part, j'ai regardé coté WS2_32.dll mais l'UDF Inet.au3 l'utilise...
Pour ma part, je pense que toute LiveBox Orange est programmée pour renvoyer systématiquement sur des ping -a ou nslookup la réponse "LiveBox" et non mon nom d'hôte.
Mais je peux me tromper... Si qq peut faire ce test _TCPIpToName("de son adresse ip") pour me dire ce qu'il obtient derrière une LiveBox...
Ps : Je suis en XP SP3
Re: [..] Nom d'Hôte
Posté : jeu. 27 janv. 2011 22:06
par FernandG
Bonsoir,
Voici une fonction (inspiré de
_GetIP) écrite spécialement pour vous
► Afficher le texte
Code : Tout sélectionner
ConsoleWrite(_GetHostName() & @CRLF)
Func _GetHostName()
Local $host
If InetGet("http://www.hostip.info", @TempDir & "\~hostname.tmp") Then
$host = FileRead(@TempDir & "\~hostname.tmp", FileGetSize(@TempDir & "\~hostname.tmp"))
FileDelete(@TempDir & "\~hostname.tmp")
$host = StringTrimLeft($host, StringInStr($host, "Host name:") + 13)
$host = StringTrimRight($host, StringLen($host) - StringInStr($host, @LF) + 1)
If StringRegExp($host, ".+\.\w{2,4}\.$") Then
Return $host
EndIf
EndIf
Return SetError(1, 0, -1)
EndFunc
Du coup, je l'ajoute à ma bibliothèque de code sources
Bonne soirée.
[R] Nom d'Hôte
Posté : jeu. 27 janv. 2011 22:20
par Yle
Ok pour ce code qui me donne effectivement la bonne information.
Dans Inet.au3, c'est effectivement de la même façon qu'on retrouve l'adresse IP.

Bravo et merci, je mets en "RESOLU"
Re: [..] Nom d'Hôte
Posté : jeu. 27 janv. 2011 22:21
par FernandG
Dans
_GetIP, il a un site de "secours" au cas où ...
J'ai donc modifié la fonction pour en faire de même
► Afficher le texte
Code : Tout sélectionner
ConsoleWrite(_GetHostName() & @CRLF)
Func _GetHostName()
Local $host
If InetGet("http://www.hostip.info", @TempDir & "\~hostname.tmp") Then
$host = FileRead(@TempDir & "\~hostname.tmp", FileGetSize(@TempDir & "\~hostname.tmp"))
FileDelete(@TempDir & "\~hostname.tmp")
$host = StringTrimLeft($host, StringInStr($host, "Host name:") + 13)
$host = StringTrimRight($host, StringLen($host) - StringInStr($host, @LF) + 2)
If StringRegExp($host, ".+\.\w{2,4}$") Then
Return $host
EndIf
EndIf
If InetGet("http://www.joeswebtools.com/network/your-hostname/", @TempDir & "\~hostname.tmp") Then
$host = FileRead(@TempDir & "\~hostname.tmp", FileGetSize(@TempDir & "\~hostname.tmp"))
FileDelete(@TempDir & "\~hostname.tmp")
$host = StringTrimLeft($host, StringInStr($host, "Your host name is ") + 25)
$host = StringTrimRight($host, StringLen($host) - StringInStr($host, "/") + 2)
If StringRegExp($host, ".+\.\w{2,4}$") Then
Return $host
EndIf
EndIf
Return SetError(1, 0, -1)
EndFunc
Bonne soirée.
Edit : Suppression de la ligne : ClipPut($host)
Re: [R] Nom d'Hôte
Posté : jeu. 27 janv. 2011 22:26
par FernandG
Yle a écrit :je mets en "RESOLU"
C'est en éditant le sujet de votre premier message
