在Erlang中显示特定于连接的cookie

在Erlang中显示特定于连接的cookie,erlang,Erlang,使用erlang:set_cookie/2在节点上设置cookie时,可以为不同的节点设置不同的cookie。有没有办法显示为哪个节点设置了哪个cookie 调用erlang:get_cookie/1不会显示此信息,只显示“默认”cookie 例如: 用cookiefoo启动节点EA,用cookiebar启动节点B。在NodeA,现在通过调用erlang:set_cookie(NodeB,bar)将与NodeB通信时使用的cookie设置为bar。ping现在可以正常工作,没有“从不允许的节点尝

使用
erlang:set_cookie/2
在节点上设置cookie时,可以为不同的节点设置不同的cookie。有没有办法显示为哪个节点设置了哪个cookie

调用erlang:get_cookie/1不会显示此信息,只显示“默认”cookie

例如:


用cookie
foo
启动节点EA,用cookie
bar
启动节点B。在NodeA,现在通过调用
erlang:set_cookie(NodeB,bar)
将与NodeB通信时使用的cookie设置为
bar
。ping现在可以正常工作,没有“从不允许的节点尝试连接…”错误。在NodeA上调用
erlang:get_cookie()
,但是仍然显示“默认”cookie
foo
。如何找到为NodeB设置的cookie?

您必须在NodeB上运行
获取cookie/0
函数才能获取该节点的名称。简单的解决方案是(在NodeA上):

连接节点后

在NodeA上执行
erlang:set_cookie(NodeB,bar)
调用只会使NodeA/NodeB能够相互连接,它们仍然拥有原始cookie


但是为了能够连接到另一个节点,您必须已经知道该节点的cookie:)

它似乎没有文档记录,但是
auth:get\u cookie/1
做您想要的事情。对于您的情况,您可以在
NodeA
上调用
auth:get\u cookie(NodeB)

rpc:call(NodeB, erlang, get_cookie, []).