Передача команды в Эрл? - PullRequest
0 голосов
/ 01 апреля 2012

Мы запускаем программу erlang (ejabberd). Иногда нам нужно проверять работоспособность, подключив оболочку erl к этой запущенной программе erlang.

Я пытаюсь все это написать, вместо того, чтобы набирать erl -sname r -remsh ...., а затем, моя команда в оболочке erlang, я ищу способ непосредственно выполнить эту команду из моей оболочки bash и получить вывод. Возможно ли это?

После ответа Одобенуса я написал этот маленький сценарий:

#!/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`

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

вы можете написать escript для этой цели 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`
0 голосов
/ 28 декабря 2015

Проблема в параметре -sname. Используйте полное имя -name node @ host, и все будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...