Question

Essayer de faire dialoguer deux nœuds erlang: un sur une machine Ubuntu et un sur Windows XP.

Nous obtenons une " tentative de connexion d'un noeud non autorisé ". message qui empêche un noeud de recevoir des messages de l'autre.

Ils utilisent tous les deux des versions 5.XXX d’Erlang OTP.

Les deux nœuds ont le même cookie (.erlang.cookie)

Nous démarrons le noeud récepteur avec:

erl -name fred@ipaddress

et appeler la fonction dessus avec 'fred @ ipaddress' (entre guillemets simples)

Nous avons désactivé les pare-feu.

Alors quoi d'autre peut empêcher la connexion?

Mise à jour: nous utilisons erlang: get_cookie () pour vérifier le cookie sur les deux nœuds et les valeurs sont différentes. Alors est-ce le problème. Nous pensons que nous définissons le cookie en plaçant le même fichier .erlang.cookie dans le répertoire où nous exécutons erlang sur les deux machines. Mais peut-être que c'est le mauvais endroit?

Mise à jour 2: merci pour les réponses à tous. Nous avons choisi Ranok comme réponse car cela a bien fonctionné pour nous. Je suis sûr que certaines des méthodes alternatives de configuration du cookie conviendraient également.

Était-ce utile?

La solution

De plus, lorsque vous démarrez le système Erlang, un indicateur de ligne de commande -setcookie vous permet de spécifier le cookie au moment de son démarrage.

erl -name fred@ipaddress -setcookie FOOBAR

J'espère que ça aide, Jacob

Autres conseils

Commencez par vérifier le cookie de chaque nœud. De la coque:

erlang:get_cookie().

S'ils ne sont pas identiques, modifiez l'un des cookies du nœud pour qu'il corresponde à l'autre:

erlang:set_cookie(node(), "newcookie").

Si tout fonctionne, vous devez comprendre pourquoi le paramètre cookie n'est pas sélectionné dans le fichier de configuration ou l'argument de ligne de commande.

Le cookie Erlang devrait figurer dans le répertoire des utilisateurs. Pas le répertoire de l'application.

Donc, le vôtre est quelque chose comme:

C:\Documents and Settings\InterstarUser\.erlang.cookie

Vous pouvez voir l'emplacement de HOME avec la commande env dans la ligne de commande si je me souviens bien de mes jours Windows.

net_adm: ping ()

essayez net_adm: ping () à partir des deux nœuds.

http : //www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html

erlang:set_cookie(node(), 'newcookie').

pas

erlang:set_cookie(node(), "newcookie").

Deux choses me viennent à l’esprit:

  1. Avez-vous essayé de définir le cookie via erlang: set_cookie sur les deux nœuds?
  2. Si aucun fichier .erlang.cookie ne se trouve dans le répertoire $ HOME, il en sera créé un. Se pourrait-il qu'un des fichiers .erlang.cookie ne soit pas au bon endroit sur une seule machine? Vous pouvez rechercher le fichier sur vos disques durs et si vous trouvez plus que celui que vous avez créé, erlang l’aura peut-être mis là et l’utilise.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top