1

erlang プログラム (ejabberd) を実行しています。場合によっては、実行中の erlang プログラムに erl シェルを接続してヘルス チェックを行う必要があります。

私はこれらすべてをスクリプト化しようとしていますerl -sname r -remsh .....erlangシェルでコマンドを入力してからコマンドを実行するのではなく、bashシェルからそのコマンドを直接実行して出力を取得する方法を探しています. これは可能ですか?

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]).

問題は、これらが接続に使用するパラメーターとまったく同じであるにもかかわらず、「ノードダウン」エラーが発生することですerlerl -sname r -remsh ejabberd@xmpp -setcookie `cat ~ejabberd/.erlang.cookie`

4

2 に答える 2

2

その目的のために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`
于 2012-04-01T17:00:05.443 に答える