Эрланг :Запрещенные узлы / Возможно, вопрос с файлами cookie

StackOverflow https://stackoverflow.com/questions/451583

  •  19-08-2019
  •  | 
  •  

Вопрос

Пытаюсь заставить два узла erlang разговаривать друг с другом :один на компьютере с Ubuntu и один на Windows XP.

Мы получаем "Попытка подключения с запрещенного узла" сообщение, которое запрещает одному узлу получать сообщения от другого.

Они оба используют 5.XXX версии Erlang OTP.

Оба узла имеют один и тот же файл cookie ( .erlang.cookie).

Мы запускаем узел приемника с помощью :

erl -name fred@ipaddress

и вызываем функцию на нем с помощью 'fred@ipaddress' (в одинарных кавычках)

Мы отключили брандмауэры.

Итак, что еще может препятствовать соединению?

Обновить :мы используем erlang:get_cookie() для проверки файлов cookie на обоих узлах, и значения отличаются.Так вот в чем проблема.Мы думаем, что устанавливаем cookie, помещая один и тот же файл .erlang.cookie в каталог, в котором мы запускаем erlang на обеих машинах.Но, может быть, это не то место?

Обновление 2 :всем спасибо за ответы.Мы выбрали Ranok's в качестве нашего ответа, потому что он хорошо сработал для нас.Я уверен, что некоторые из альтернативных способов установки файла cookie тоже подошли бы.

Это было полезно?

Решение

Кроме того, когда вы запускаете систему Erlang, есть флаг командной строки -setcookie, который позволит вам указать cookie во время запуска.

erl -name fred@ipaddress -setcookie FOOBAR

Надеюсь, это поможет, Jacob

Другие советы

Начните с проверки файлов cookie каждого узла. Из оболочки:

erlang:get_cookie().

Если они не совпадают, измените один из файлов cookie узла, чтобы он соответствовал другому:

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

Если все работает, вам нужно понять, почему настройки cookie не выбираются из файла конфигурации или аргумента командной строки.

Файл cookie Erlang должен находиться в каталоге пользователей. Не каталог приложения.

Итак, у вас есть что-то вроде:

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

Вы можете увидеть местоположение HOME с помощью команды env в командной строке, если я правильно запомнил свои дни в Windows.

net_adm:ping()

попробуйте net_adm:ping() с обоих узлов.

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

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

нет

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

Несколько вещей приходят на ум:

<Ол>
  • Вы пытались установить cookie с помощью erlang: set_cookie на обоих узлах?
  • Если в каталоге $ HOME не найден файл .erlang.cookie, он будет создан. Может ли быть так, что один из файлов .erlang.cookie не в нужном месте на одной машине? Вы можете найти файл на своих жестких дисках, и если вы найдете больше, чем тот, который вы создали, erlang, возможно, поместил его туда и использует его.
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top