Récupérer
le nom d'une machine cliente dans un contexte Intranet (Olivier) |
En fait, on ne récupère ici pas la nom de la machine lui même
mais celui associé à l'IP connectée au serveur web.
Dans le cas d'un intranet, on peut par ce biais récupérer le nom
réel de la machine si la résolution des noms est basé sur
DNS comme dans le cas des réseaux Microsoft (W2000 et +).
Cette procédure appelle un programme NSLOOKUP, qui
permet d'interroger le serveur de DNS par défaut de la machine (ou un
autre).
Ici, on y fait appel pour faire un reverse lookup, c.a.d traduire une IP en
nom.
Pour ce faire, on appelle le programme avec une commande stockant le résultat
dans un fichier puis on lit ce fichier pour récupérer ce qui nous
intéresse.
Si la requête n'a pas abouti, on renvoie "<Vide>".
PROCEDURE
IPVersDNS(IP) CmdExe est une chaîne = "cmd /c nslookup " + IP + " >res.txt" Posfic est un entier t est une chaîne LanceAppli(CmdExe, exeInactif, exeBloquant, "c:\temp\") SI ChaîneOccurrence(t, "DNS request timed out")
>=1 OU Taille(t) < 70 ALORS |
Attention toutefois, ce code est bloquant.... Je vous laisse faire les ajustements pour ne pas pénaliser les perfs.
Programativement parlant, il serait plus "propre" de passer directement par le serveur DNS mais dans un souci de rapidité et de simplicité on peut utiliser cela.