首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将命令传递给erl?

将命令传递给erl?
EN

Stack Overflow用户
提问于 2012-04-01 23:53:31
回答 2查看 1.8K关注 0票数 1

我们正在运行一个erlang程序(ejabberd)。有时,我们需要通过将erl shell连接到这个正在运行的erlang程序来进行健康检查。

我正在尝试编写所有这些脚本,而不是在erlang shell中输入erl -sname r -remsh ....,然后输入我的命令,而是直接从我的bash shell执行该命令并获得输出。这个是可能的吗?

在Odobenus的回答之后,我写了这个小脚本:

代码语言:javascript
复制
#!/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“错误,即使这些参数与我用来连接erlerl -sname r -remsh ejabberd@xmpp -setcookie `cat ~ejabberd/.erlang.cookie`的参数是完全相同的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-02 01:00:05

您可以为此目的编写脚本http://www.erlang.org/doc/man/escript.html

一种(例如tst.erl)

代码语言:javascript
复制
#!/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脚本调用它

代码语言:javascript
复制
./tst.erl `cat verythatfile`
票数 2
EN

Stack Overflow用户

发布于 2015-12-28 17:38:46

问题出在-sname参数中。使用全名-name节点@host,一切都会正常工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9965822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档