De son côté, la libc utilise le fichier de configuration nsswitch.conf(5) pour déterminer les méthodes à utiliser pour résoudre le nom qu'on lui soumet. En général, c'est :
- le fichier statique hosts(5)Â ;
- une requĂŞte mDNSÂ ;
- une requĂŞte DNS.
Avez-vous déjà eu besoin de savoir comme un logiciel, autrement dit la libc, allait résoudre un nom donné ? La commande host(1) ne convient pas, puisqu'elle fait juste de la résolution DNS. Et bien, voici une interface en ligne de commande pour le résolveur de la libc :
#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>
void print_host_info(struct hostent *host)
{
int i ;
char *addr ;
char paddr[INET6_ADDRSTRLEN] ;
printf("Name: %s\n", host->h_name) ;
printf("Aliases:") ;
for (i = 0 ; host->h_aliases[i] != NULL ; i++)
{
printf(" %s", host->h_aliases[i]) ;
}
printf("\n") ;
printf("Address type: ") ;
switch (host->h_addrtype)
{
case AF_INET : printf("inet\n") ;
break ;
case AF_INET6 : printf("inet6\n") ;
break ;
}
printf("Address length: %d\n", host->h_length) ;
printf("Addresses:") ;
for (i = 0 ; host->h_addr_list[i] != NULL ; i++)
{
addr = host->h_addr_list[i] ;
printf(" %s", inet_ntop(host->h_addrtype, addr, paddr, INET6_ADDRSTRLEN)) ;
}
printf("\n") ;
}
int main(int argc, char **argv)
{
if (argc != 2)
{
printf("Need a single hostname.\n") ;
return 1 ;
}
struct hostent *host ;
char host4 = 0, host6 = 0 ;
if ((host = gethostbyname2(argv[1], AF_INET)))
{
host4 = 1 ;
print_host_info(host) ;
}
if (host4)
{
printf("\n") ;
}
if ((host = gethostbyname2(argv[1], AF_INET6)))
{
host6 = 1;
print_host_info(host) ;
}
if (!host4 && !host6)
{
printf("Host not found.\n") ;
}
return 0 ;
}
Ça s'utilise de la façon la plus simple qui soit :
gcc -Wall -o resolv resolv.c
./resolv www.linuxfr.org
# Pour une fois que c'est pas dans astuces ...
Posté par benoar . Évalué à  5.
# lapin compris
Posté par defmonkey . Évalué à  2.
Avez-vous déjà eu besoin de savoir comme un logiciel, autrement dit la libc, allait résoudre un nom donné ?
soit
Avez-vous déjà eu besoin de savoir comment un logiciel, autrement dit la libc, allait résoudre un nom donné ?
mais pas les deux. Si ?
[^] # Re: lapin compris
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à  3.
# Et sinon...
Posté par Bruno Muller . Évalué à  5.
getent hosts
de faire ça ?[^] # Re: Et sinon...
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à  3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.