'error {badmatch,{error,enoent}}' 在 ejabberd 上执行 push_roster 命令
'error {badmatch,{error,enoent}}' occurred executing push_roster command on ejabberd
我正在尝试将批量联系人添加到 ejabberd 中的用户名册。我在 ejabberd 中使用默认的 Mnesia 数据库。
我创建了一个文件 sampleRosterFile。此文件内容为
[{"kunal", "localhost", "Friend List", "kunal"},{"Rich", "localhost", "Friend List", "Rich"}]
我正在执行命令
sudo ejabberdctl push_roster /home/kunal/Projects/demo/sampleRosterFile kunal localhost
但是我收到错误
Problem 'error {badmatch,{error,enoent}}' occurred executing the command.
Stacktrace: [{mod_admin_extra,push_roster,3,
[{file,"src/mod_admin_extra.erl"},{line,1145}]},
{ejabberd_commands,execute_command2,2,
[{file,"src/ejabberd_commands.erl"},
{line,410}]},
{ejabberd_ctl,call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,295}]},
{ejabberd_ctl,try_call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,271}]},
{ejabberd_ctl,process2,3,
[{file,"src/ejabberd_ctl.erl"},{line,220}]},
{ejabberd_ctl,process,1,
[{file,"src/ejabberd_ctl.erl"},{line,205}]},
{rpc,'-handle_call_call/6-fun-0-',5,
[{file,"rpc.erl"},{line,206}]}]
根据最近的进展,我已经将我的花名册文件制作成 .txt 并再次尝试。但现在这给了我一些与 string
相关的错误
sudo ejabberdctl push_roster /home/kunal/Projects/demo/ejabberd/ebin/sampleRosterFile.txt kunal localhost
Problem 'error function_clause' occurred executing the command.
Stacktrace: [{jid,to_string,[error],[{file,"src/jid.erl"},{line,134}]},
{mod_admin_extra,build_roster_item,3,
[{file,"src/mod_admin_extra.erl"},{line,1200}]},
{mod_admin_extra,subscribe,8,
[{file,"src/mod_admin_extra.erl"},{line,1088}]},
{mod_admin_extra,subscribe_roster,2,
[{file,"src/mod_admin_extra.erl"},{line,1167}]},
{ejabberd_commands,execute_command2,2,
[{file,"src/ejabberd_commands.erl"},
{line,410}]},
{ejabberd_ctl,call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,295}]},
{ejabberd_ctl,try_call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,271}]},
{ejabberd_ctl,process2,3,
[{file,"src/ejabberd_ctl.erl"},{line,220}]}]
这里需要帮助。
enoent
错误表示找不到文件。您可能在命令中犯了一个错误,无法找到名册文件或者 ejabberd 用户没有权限阅读它。
之前的代码给我 enoent
错误,@Mickaël Rémond 正确指出了这一点
提供花名册文件的完整路径会有帮助。
接下来是 error function_clause
错误,这意味着 没有函数或签名与我的输入匹配 。
调试后发现mod_admin_extra中push_roster命令的正确文件格式是
[{<<"admin">>,<<"localhost">>,<<"Friend">>,<<"Admin">>},{<<"anil">>,<<"localhost">>,<<"Friend">>,<<"Anil">>}]
终于成功了。
我在博客上找到了有用的解释 http://www.techiekunal.in/2016/04/ejabberd-bulk-roster-addition-using-pushroster.html
我正在尝试将批量联系人添加到 ejabberd 中的用户名册。我在 ejabberd 中使用默认的 Mnesia 数据库。 我创建了一个文件 sampleRosterFile。此文件内容为
[{"kunal", "localhost", "Friend List", "kunal"},{"Rich", "localhost", "Friend List", "Rich"}]
我正在执行命令
sudo ejabberdctl push_roster /home/kunal/Projects/demo/sampleRosterFile kunal localhost
但是我收到错误
Problem 'error {badmatch,{error,enoent}}' occurred executing the command.
Stacktrace: [{mod_admin_extra,push_roster,3,
[{file,"src/mod_admin_extra.erl"},{line,1145}]},
{ejabberd_commands,execute_command2,2,
[{file,"src/ejabberd_commands.erl"},
{line,410}]},
{ejabberd_ctl,call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,295}]},
{ejabberd_ctl,try_call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,271}]},
{ejabberd_ctl,process2,3,
[{file,"src/ejabberd_ctl.erl"},{line,220}]},
{ejabberd_ctl,process,1,
[{file,"src/ejabberd_ctl.erl"},{line,205}]},
{rpc,'-handle_call_call/6-fun-0-',5,
[{file,"rpc.erl"},{line,206}]}]
根据最近的进展,我已经将我的花名册文件制作成 .txt 并再次尝试。但现在这给了我一些与 string
相关的错误sudo ejabberdctl push_roster /home/kunal/Projects/demo/ejabberd/ebin/sampleRosterFile.txt kunal localhost
Problem 'error function_clause' occurred executing the command.
Stacktrace: [{jid,to_string,[error],[{file,"src/jid.erl"},{line,134}]},
{mod_admin_extra,build_roster_item,3,
[{file,"src/mod_admin_extra.erl"},{line,1200}]},
{mod_admin_extra,subscribe,8,
[{file,"src/mod_admin_extra.erl"},{line,1088}]},
{mod_admin_extra,subscribe_roster,2,
[{file,"src/mod_admin_extra.erl"},{line,1167}]},
{ejabberd_commands,execute_command2,2,
[{file,"src/ejabberd_commands.erl"},
{line,410}]},
{ejabberd_ctl,call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,295}]},
{ejabberd_ctl,try_call_command,3,
[{file,"src/ejabberd_ctl.erl"},{line,271}]},
{ejabberd_ctl,process2,3,
[{file,"src/ejabberd_ctl.erl"},{line,220}]}]
这里需要帮助。
enoent
错误表示找不到文件。您可能在命令中犯了一个错误,无法找到名册文件或者 ejabberd 用户没有权限阅读它。
之前的代码给我 enoent
错误,@Mickaël Rémond 正确指出了这一点
提供花名册文件的完整路径会有帮助。
接下来是 error function_clause
错误,这意味着 没有函数或签名与我的输入匹配 。
调试后发现mod_admin_extra中push_roster命令的正确文件格式是
[{<<"admin">>,<<"localhost">>,<<"Friend">>,<<"Admin">>},{<<"anil">>,<<"localhost">>,<<"Friend">>,<<"Anil">>}]
终于成功了。
我在博客上找到了有用的解释 http://www.techiekunal.in/2016/04/ejabberd-bulk-roster-addition-using-pushroster.html