0

Erlang R14A を使用して Ejabberd 2.1.5-3 でこのコマンドを実行しようとすると、

ejabberdctl dump /tmp/ejabberd1.text

受信したejabberdから登録ユーザーをダンプする

{error_logger,{{2012,5,17},{17,9,48}},"Too short cookie string",[]} {error_logger,{{2012,5,17},{17,9,48}},crash_report,[[{initial_call,{auth,init,['Argument__1']}},{pid,<0.19.0>},{registered_name,[]},{error_info,{exit,{"Too short cookie string",[{auth,init_cookie,0},{auth,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[net_sup,kernel_sup,<0.9.0>]},{messages,[]},{links,[<0.17.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,987},{stack_size,24},{reductions,871}],[]]} {error_logger,{{2012,5,17},{17,9,48}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{"Too short cookie string",[{auth,init_cookie,0},{auth,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{offender,[{pid,undefined},{name,auth},{mfargs,{auth,start_link,[]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]} {error_logger,{{2012,5,17},{17,9,48}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfargs,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]} {error_logger,{{2012,5,17},{17,9,48}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]} {"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"}

Cookie ファイルを削除して再起動しようとしましたが、これは役に立ちませんでした。

4

5 に答える 5

0

ここにCookieファイルの内容を投稿してください。クッキーの長さが本当に短すぎるかもしれません。

erlangまたは、「短すぎるCookie文字列」を見つけるためのソースコードをgrepして、何が問題なのかを確認することもできます。

2012/5/22、以下のコンテンツを追加しました。

erlangのソースコード(R15B)を調べたところ、ファイル「auth.erl」でのみ文字列「Tooshortcookiestring」が見つかりました。関連するコードは次のとおりです。ソースコードから、ファイルのCookieファイルが空であるため、エラーが表示されます。

確認する方法は2つあると思います。

  1. erlang:get_cookie() -> Cookie | nocookieこれはerlangシェルで使用して確認できます。
  2. 詳細なCookieのディレクトリを書き込むためのデバッグ式を追加することにより、次のread_cookieファイルを変更し、それを* .beamファイルにコンパイルして、古いファイルを置き換えることができます。

Ejabberdが別のOSのユーザーを使用し、別のホームディレクトリのerlangのCookieファイルを使用していて、他のCookieファイルの内容が空である可能性があります。私はこれまでEjabberdを使用したことがありませんが、2か月前のrabbitmqで同様の問題に直面したことがあります。

check_cookie([Letter|Rest], Result) when $\s =< Letter, Letter =< $~ ->
    check_cookie(Rest, [Letter|Result]);
check_cookie([X|Rest], Result) ->
    check_cookie1([X|Rest], Result);
check_cookie([], Result) ->
    check_cookie1([], Result).

check_cookie1([$\n|Rest], Result) ->
    check_cookie1(Rest, Result);
check_cookie1([$\r|Rest], Result) ->
    check_cookie1(Rest, Result);
check_cookie1([$\s|Rest], Result) ->
    check_cookie1(Rest, Result);
check_cookie1([_|_], _Result) ->
    {error, "Bad characters in cookie"};
check_cookie1([], []) ->
    {error, "Too short cookie string"};
check_cookie1([], Result) ->
    {ok, lists:reverse(Result)}.

read_cookie(Name, Size) ->
    case file:open(Name, [raw, read]) of
    {ok, File} ->
        case file:read(File, Size) of
        {ok, List} ->
            file:close(File),
            check_cookie(List, []);
        {error, Reason} ->
            make_error(Name, Reason)
        end;
    {error, Reason} ->
        make_error(Name, Reason)
    end.
于 2012-05-19T00:43:14.067 に答える
0

Cookieファイルにコンテンツが含まれていることを確認してください。空の場合は、このエラーが発生します。

于 2012-05-18T20:14:32.657 に答える
0

問題はErlangのバージョンとEjabberdのバージョンに互換性がないことでした。Erlangバージョンを修正すると、問題は解決しました。ここでのレッスンは、ejabberdバージョンに推奨バージョンのerlangを実行していることを確認することです。

于 2012-11-08T22:52:14.340 に答える
0

私にとっての問題は、 file:/var/lib/rabbitmq/.erlang.cookie に複数の行があることでした:

LOBGMGERILECQBFOFTLL
#DGBDSDFTGLECQAFDCDR

発言のある行を削除した後、サービスを開始できました

cat /var/lib/rabbitmq/.erlang.cookie
LOBGMGERILECQBFOFTLL 
于 2015-08-06T08:52:00.873 に答える