我们正在运行一个erlang程序(ejabberd)。有时,我们需要通过将erl shell连接到这个正在运行的erlang程序来进行健康检查。
我正在尝试编写所有这些脚本,而不是在erlang shell中输入erl -sname r -remsh ....,然后输入我的命令,而是直接从我的bash shell执行该命令并获得输出。这个是可能的吗?
在Odobenus的回答之后,我写了这个小脚本:
#!/usr/bin/env escript
%%! -sname r -setcookie `cat ~ejabberd/.erlang.cookie`
main([]) ->
Res = rpc:call(ejabberd@xmpp,mnesia,info,[]),
io:format("~p~n",[Res]).问题是我得到了一个"Node Down“错误,即使这些参数与我用来连接erl:erl -sname r -remsh ejabberd@xmpp -setcookie `cat ~ejabberd/.erlang.cookie`的参数是完全相同的
发布于 2012-04-02 01:00:05
您可以为此目的编写脚本http://www.erlang.org/doc/man/escript.html
一种(例如tst.erl)
#!/usr/bin/env escript
%%! -sname r
main([Cookie]) ->
erlang:set_cookie(node(),list_to_atom(Cookie)),
Res = rpc:call(name@somenode,somemodule,somefunction,[]),
io:format("~p~n",[Res]).并从bash脚本调用它
./tst.erl `cat verythatfile`发布于 2015-12-28 17:38:46
问题出在-sname参数中。使用全名-name节点@host,一切都会正常工作
https://stackoverflow.com/questions/9965822
复制相似问题