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