2012-04-01 7 views
0

私たちはerlangプログラム(ejabberd)を実行しています。時には、erlangプログラムをerlangシェルに接続してヘルスチェックを行う必要があります。erlにコマンドを渡しますか?

erl -sname r -remsh ....と入力するのではなく、erlangシェルでmyコマンドを入力するのではなく、bashシェルからコマンドを直接実行して出力を取得する方法を探しています。これは可能ですか?

#!/usr/bin/env escript 
%%! -sname r -setcookie `cat ~ejabberd/.erlang.cookie` 

main([]) -> 
    Res = rpc:call([email protected],mnesia,info,[]), 
    io:format("~p~n",[Res]). 

問題は、私はこれらは私がerlとの接続に使用するまったく同じのparamsがあるにもかかわらず、「ノード停止」エラーが出るということです::erl -sname r -remsh [email protected] -setcookie `cat ~ejabberd/.erlang.cookie`

はOdobenusの答えの後、私はこの小さなスクリプトを書きました

答えて

1

あなたがその目的のhttp://www.erlang.org/doc/man/escript.html

種類のescriptを書くことができます

(例えばtst.erl用)

./tst.erl `cat verythatfile` 
+0

残念ながら、私は '{badrpc、nodedown}'を取得します。私がerlに接続するとき、事はthaatです。私はremshを使用します。これはescriptではできないようです。何か案が? –

+0

nodedownはあなたのサーバーをエスケープしないことを意味します。あなたは同じクッキーを設定しましたか? –

+0

Dang、私の 'cat〜ejabberd/.erlang.cookie'はthge %%行で失敗します。手動でそれを入力すると、その問題は解決しました...しかし、それを避けるのがよいでしょう。どんな手掛かり? –

0

問題のbashスクリプトから呼び出しが-snameパラメータです。完全な名前-name node @ hostを使用してください。すべて動作します。

関連する問題