在具有erlang:set_cookie/2
的节点上设置cookie时,可以为不同的节点设置不同的cookie。有没有办法显示哪个cookie为哪个节点设置?
调用erlang:get_cookie/1
不会显示此信息,只会显示“默认”Cookie。
示例:
使用Cookie foo
启动NodeA,使用Cookie bar
启动NodeB。现在,NodeA通过调用bar
设置cookie,以便在与NodeB通信erlang:set_cookie(NodeB, bar)
时使用。 Ping现在工作正常,没有“连接尝试不允许的节点...”错误。但是,在NodeA上调用erlang:get_cookie()
仍会显示“默认”Cookie foo
。如何找到为NodeB设置的cookie?
答案 0 :(得分:6)
似乎没有记录,但auth:get_cookie/1
做了你想要的。对于您的情况,您可以在auth:get_cookie(NodeB)
上致电NodeA
。
答案 1 :(得分:0)
您必须在NodeB上运行get_cookie/0
函数才能获取该节点的名称。简单的解决方案是(在NodeA上):
rpc:call(NodeB, erlang, get_cookie, []).
连接节点后。
在NodeA上进行erlang:set_cookie(NodeB, bar)
调用只是让NodeA / NodeB可以相互连接,它们仍然有原始的cookie。
但是为了能够连接到其他节点,您必须已经知道该节点的cookie :)