La fonction gethostbyname() fait partie des fonctions de sockets standards, 
fournie g�n�ralement par le syst�me d'exploitation (Sous Unix et Linux en tout 
cas, sous Windows il s'agit d'une des fonctions des Windows sockets 
<winsock.h>, et pour ceux qui ont encore Windows 3.1x, il faut pour qu'elle 
fonctionne installer une pile de protocoles r�seaux TCP/IP).

La fonction sert � obtenir la (ou les) adresses TCP/IP associ�es � un h�te dont 
on connait le nom. Elle utilise diverses sources d'information pour y parvenir:
- le nom de la machine locale (tel qu'affich� par des outils comme uname), et 
la liste des interfaces r�seaux configur�es sur la machine locale (dont 
l'adresse 127.0.0.1 associ�e g�n�ralement � l'interface interne de "loopback", 
qui ne n�cessite pas de transfert de donn�es vers une interface physique).
- un fichier comme "/etc/hosts" (ou "C:\WINDOWS\hosts" sous Windows) contenant 
une liste de noms d'h�tes et leur adresse IP associ�e
- la configuration du syst�me de r�solution de noms DNS, qui permet 
d'interroger un serveur DNS contenant ces informations et accessible � une 
adresse IP connue
- les autres syst�mes de r�solution de noms, tels que NIS et NIS+, qui g�rent 
diverses bases de donn�es de noms dont les noms d'h�tes, de domaines, 
d'utilisateurs, de groupes, de services, de protocoles, de familles d'adresse, 
etc...

La r�solution du nom utilise ces diff�rentes sources avec un ordre de priorit�, 
g�n�ralement d�fini sous Unix avec des fichiers de configuration tels que 
"/etc/nsswitch.conf", qui pr�cise dans quel ordre interroger les sources 
d'informations pour r�soudre les demandes de noms. G�n�ralement, la 
configuration standard privil�gie les sources d'information locales avant les 
sources distantes, pour assurer � la fois la s�curit� du syst�me (on fait plus 
confiance aux informations s�lectionn�es localement, qu'aux donn�es provenant 
d'un syst�me distant que l'on ne peut pas administrer), et la rapidit� des 
acc�s.

Quand la fonction ne trouve pas le nom demand� apr�s avoir interroger les 
diff�rentes sources possibles, elle retourne une erreur. Si le serveur DNS 
et/ou le serveur NIS n'ont pas �t� configur�s sur la machine, la fonction se 
sert uniquement de la r�solution locale, via le fichier "/etc/hosts". Si ce 
fichier n'existe pas non plus, le syst�me ne peut pas r�soudre le nom indiqu� 
et la fonction retourne une erreur. Si la configuration est correcte, mais que 
le nom ne peut pas �tre trouv� (souvent � cause d'un probl�me d'ambiguit�, ou 
d'oubli de la sp�cification du domaine associ� au nom d'h�te), il en sera de 
m�me.

Dans ton cas, gethostbyname() est utilis� par sudo pour v�rifier les droits 
d'acc�s � ses fonctions, car normalement c'est une fonction privil�gi�e, 
n�cessitant une authorisation avant d'acc�der � un autre compte utilisateur. 
Hors cette authorisation ne peut �tre fournie automatiquement que si 
l'utilisateur est connect� depuis un compte dit "de confiance" (tel qu'autoris� 
par l'administrateur du syst�me). La v�rification des droits d'acc�s cherche 
donc � v�rifier si l'add�s se fait depuis la machine locale (dans ce cas, les 
droits d'acc�s sont v�rifi�s localement depuis la base locale d'informations 
sur l'utilisateur connect�), ou depuis une machine distante autoris�e par 
l'administrateur.

Dans ton cas, il semble que le nom local de ta machine "DreadKnight" soit 
incorrectement configur� dans toutes les couches du syst�me. Si tu viens de 
changer le nom de la machine (v�rifie ce nom affich� par "uname -n"), il faut 
peut-�tre red�marrer la machine pour que l'ensemble des services r�seaux soient 
red�marr�s en consid�rant le nouveau nom. Mais il est possible �galement que le 
client NIS ou DNS soient mal configur�, et indique un serveur de r�solution de 
nom inaccessible. V�rifie aussi si les interfaces r�seaux sont bien d�marr�es 
et configur�es avec une commande de type "ifconfig -a" (les interfaces doivent 
�tre "UP" et "RUNNING", et leurs adresses r�seaux bien d�finies, et avec le bon 
netmask, pour permettre d'atteindre un �ventuel autre serveur NIS ou DNS...). 
V�rifies que tu "ping'es" bien les serveurs voulus sinon rev�rifies la 
configuration de tes interfaces r�seaux.

Bon courage.

----- Original Message ----- 
From: "Eric LeBlanc" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, June 01, 2000 5:00 AM
Subject: gethostbyname()


Bonjour!

J'ai une question b�b�te... la fonction gethostbyname() provient de 
quel fichier, et de quel package?

car:

DreadKnight:/usr/include$ sudo -s 
sudo: unable to lookup DreadKnight via gethostbyname(): No such file or 
directory
Segmentation fault

Je vous remercie!

Rick

-----
Eric LeBlanc
[EMAIL PROTECTED]
--------------   
  "Well, let's just say, 'if your VCR is still blinking 12:00, you don't
   want Linux'".

          --- Bruce Perens, Debian's Fearless Leader
                        ------------


--  
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Répondre à