Erlang:許可されていないノード/たぶんクッキーの質問
質問
UbuntuマシンとWindows XPの2つのアーランノードを互いに通信させようとしています。
<!> quot; 許可されていないノードからの接続試行 <!> quot; 1つのノードが他のノードからメッセージを受信できないようにするメッセージ。
両方ともErlang OTPの5.XXXバージョンを使用しています。
両方のノードに同じCookie(.erlang.cookie)があります
受信ノードを開始するには:
erl -name fred@ipaddress
そしてその関数を 'fred @ ipaddress'で(一重引用符で)呼び出します
ファイアウォールをオフにしました。
では、他に何が接続を妨げているのでしょうか?
更新:erlang:get_cookie()を使用して両方のノードのCookieを確認していますが、値は異なります。これが問題です。両方のマシンでerlangを実行するディレクトリに同じ.erlang.cookieファイルを配置して、Cookieを設定していると考えています。しかし、おそらくこれは間違った場所ですか?
更新2:皆さんの回答に感謝します。 Ranok'sが答えとして選ばれました。 Cookieを設定する別の方法もいくつかあると思います。
解決
また、Erlangシステムを起動すると、コマンドラインフラグ-setcookie
があり、起動時にCookieを指定できます。
erl -name fred@ipaddress -setcookie FOOBAR
役立つこと、 ジェイコブ
他のヒント
各ノードのCookieを確認することから始めます。シェルから:
erlang:get_cookie().
同じでない場合は、ノードのCookieの1つを他のCookieと一致するように変更します。
erlang:set_cookie(node(), "newcookie").
すべてが機能する場合は、設定ファイルまたはコマンドライン引数からCookie設定が選択されない理由を確認する必要があります。
Erlang Cookieはユーザーディレクトリにある必要があります。アプリケーションディレクトリではありません。
だからあなたのものは次のようなものです:
C:\Documents and Settings\InterstarUser\.erlang.cookie
Windowsの日から正しく覚えていれば、コマンドラインのコマンドenv
でHOMEの場所を確認できます。
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").
いくつかのことが思い浮かびます:
- 両方のノードでerlang:set_cookieを介してcookieを設定しようとしましたか?
- $ HOMEディレクトリに.erlang.cookieファイルが見つからない場合、ファイルが作成されます。 .erlang.cookieファイルの1つが1台のマシンの適切な場所にない可能性がありますか?ハードドライブでファイルを検索できますが、作成したもの以外のものを見つけた場合は、erlangがそこに置いて使用している可能性があります。